2012-10-28 35 views
3

我剛開始學習如何使用Java,所以如果這個問題太簡單,請原諒我。我試着學習第一次從文本文件中讀取,而我正在做的練習是創建一個基於文本的計算器。基本上,在一個文本文件中,我編寫了我想要執行的操作和我想要計算的值,然後在java文件中執行整個事情。閱讀數值未知的文本文件行(Java 7)

然而,我一直在使用的方法只有在有一定數量的變量時才起作用。例如,如果文本顯示「總和5 10」,那麼

if (command.equals("sum")) 
{ 
    String a=calcScanner.next(); 
    String b=calcScanner.next(); 
    float A=Float.parseFloat(a); 
    float B=Float.parseFloat(b); 
    System.out.println(command+" "+A+" "+B+" = "+(A+B)); 
} 

會給我「15」,但如果有更多的數字則不會。重構這個最好的方法是什麼,以便它能夠工作,而不管需要處理多少個數字?

+1

您可以使用一個循環,並用'nextFloat()'讀取數之前檢查'hasNextFloat()',並添加數到一個總和變量。它可以溢出到下一行,所以更好的方法是讀取整行,然後使用Scanner來確定命令並讀取參數。 – nhahtdh

回答

2

像這樣的事情

while(someScanner.hasNextFloat()) { 
    float f = someScanner.nextFloat(); 
} 

如果你想添加的所有彩車在文件中,你可以將它們添加到一個數組,然後讓所有的人的總和在陣列中。

最簡單的數組實現很可能只是一個ArrayList<Float>

或者像下面的評論暗示,可以在每次循環之後添加到一個總計。所以

float total = 0; 

,你可以只更換這個你的循環,

while(someScanner.hasNextFloat()) { 
     total += someScanner.nextFloat(); 
    } 
+1

如果沒有需要分別對每個數字進行操作的操作,則無需存儲數組。 – nhahtdh

+0

@nhahtdh不錯,他可以保持每個循環加入的「運行」數。這一切都取決於他計劃用我猜的數字來做什麼。 – Austin