2013-05-04 145 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