2013-05-04 143 views
0

我一直在网上寻求帮助,但我无法找到它,所以我正在张贴。在txt文件中读取分数java

我有被格式化这样

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

我需要阅读每个单独的馏分和输入的一个txt文件一个名为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);    
      } 
     } 
+0

可以为用户提供类的完整代码,以便调试可以做到的。 – 2013-05-04 05:49:55

+0

我如何上传所有的? 完整的代码,我可以做,但有9个类文件 – 2013-05-04 06:05:45

回答

1

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

不能spli T“1/2”

尝试

String[] strSplit = str.split("/"); 
+0

我已经改变它,它仍然给我一个NumberFormatException与“1/2”。我也删除了replaceall函数,所以它应该试图分割/ – 2013-05-04 06:02:35

+0

我认为它在这里strToInt(str),尝试如果(str.equals(“0”))返回BigFraction.ZERO;而不是 – 2013-05-04 06:10:27

+0

omg,Evgeniy Dorofeev,你有同样的生活。非常感谢 – 2013-05-04 06:18:10