Чтение дробей в текстовом файле java

Я искал в Интернете помощь с этим, но я не могу ее найти, поэтому я прибегаю к публикации.

У меня есть текстовый файл, который отформатирован так

1/2 0 1/6 6/11 1/6 2/10

Мне нужно прочитать каждую из этих отдельных фракций и ввести числитель и знаменатель в функцию BigFraction(num, denom).

Я вызываю читатель и вывожу его в виде строки. Затем я разбиваю на пробелы, чтобы получить отдельные дроби, поскольку строки вводят их в мой вспомогательный метод strToBF, который разбивается на косую черту и вводит числитель и знаменатель.

но это не работает, любая помощь будет принята с благодарностью

мой основной метод

            String file = fileToString(fileName);
    file.replaceAll("(.*)\\/(.*)", "a");
    String[] splitFile = file.split(" ");

    BigFraction conditionA = stringToBF(splitFile[0]);
    BigFraction c1A = stringToBF(splitFile[1]);
    BigFraction c2A = stringToBF(splitFile[2]);
    ConditionalTwoCoinChannel CTCCA = new ConditionalTwoCoinChannel(conditionA, new TwoCoinChannel(c1A, c2A));

    BigFraction conditionB = stringToBF(splitFile[3]);
    BigFraction c1B = stringToBF(splitFile[4]);
    BigFraction c2B = stringToBF(splitFile[5]);
    ConditionalTwoCoinChannel CTCCB = new ConditionalTwoCoinChannel(conditionB, new TwoCoinChannel(c1B, c2B));

    List<ConditionalTwoCoinChannel> outputList = new ArrayList<ConditionalTwoCoinChannel>();

    outputList.add(CTCCA);
    outputList.add(CTCCB);

    return outputList;

и два моих вспомогательных метода

private static String fileToString(String file)
        throws FileNotFoundException, IOException {

        BufferedReader fileReader = new BufferedReader(new FileReader(file));
        StringBuilder sBuilder = new StringBuilder();
        String fileLine = fileReader.readLine();

        try {
            while (fileLine != null) {
                sBuilder.append(fileLine);
                sBuilder.append(" ");
                fileLine = fileReader.readLine();
            }
        } catch (FileNotFoundException e1) {
            throw new RuntimeException("file not found");
        } catch (IOException e2) {
            throw new RuntimeException("Input Error");
        }
        finally {
            fileReader.close();
        }


        return sBuilder.toString();




private static BigFraction stringToBF(String str){

            if (strToInt(str) == 0) {
                return BigFraction.ZERO;
            }
            else {
                String[] strSplit = str.split("(.*)a(.*)");
                int numerator = strToInt(strSplit[0]);
                int denominator = strToInt(strSplit[1]);
                return new BigFraction(numerator, denominator);             
            }
        }

person Aaron Troeger    schedule 04.05.2013    source источник
comment
Можете ли вы предоставить свой полный код с классами, чтобы можно было выполнить отладку.   -  person Juned Ahsan    schedule 04.05.2013
comment
как загрузить все это? Полный код я могу сделать, но есть 9 файлов классов   -  person Aaron Troeger    schedule 04.05.2013


Ответы (1)


Этот

String[] strSplit = str.split("(.*)a(.*)");

нельзя разделить "1/2"

пытаться

String[] strSplit = str.split("/");
person Evgeniy Dorofeev    schedule 04.05.2013
comment
Я изменил его на это, и он все еще дает мне исключение NumberFormatException с 1/2. Я также удалил функцию replaceall, поэтому она должна просто попытаться разделить на / - person Aaron Troeger; 04.05.2013
comment
Я думаю, что здесь strToInt(str), попробуйте if (str.equals(0)) return BigFraction.ZERO; вместо - person Evgeniy Dorofeev; 04.05.2013
comment
омг, Евгений Дорофеев, у тебя такая же жизнь, как у меня. Спасибо большое - person Aaron Troeger; 04.05.2013