2015-09-23 60 views
0

我有一個包含帳戶號碼餘額分割字符串,但是把它們作爲雙

1001 50.67 
1002 500.32 
1003 63.63 
1004 953.53 
1005 735.22 

我想編寫一個程序,要求用戶輸入一列,另外這個文本文件了賬戶號碼,例如1002,那麼我想從文件中返回與它相關的餘額,在這種情況下是500.31。我也希望能夠從餘額中添加(存款)或減(提取)金額,然後更新文本文件。什麼是最好的方式來做到這一點? 我不會有存款或提取方法的問題,但我想知道如何將兩個數字拆分爲字符串,但在添加或減少時仍然將餘額用作雙精度。

+1

*餘額* **不是**整數。並嘗試'System.out.println(0.05 + 0.05 + 0.05);'爲了理解你爲什麼要用'BigDecimal'來賺錢。 –

回答

1

如果你的字符串類似

1001 50.67 

然後你單獨使用空間作爲分隔符使用類似的東西以下

str = "1001 50.67"; 
String[] splited = str.split("\\s+"); 

您可以將第二個值使用像

代碼翻番
double value = Double.parseDouble(splited[1]); 

然後繼續執行您想要做的更改。

希望這有助於

0

我真的不知道,如果使用地圖將是最好的對於這種情況,但隨後又可以給你更容易檢查correspoding每個帳戶的平衡。

您可以將帳戶號碼作爲密鑰的地圖和餘額作爲其相應的

Map balancesOfEachAccount = new HashMap<String, Double>() 
//with this, you can either treat the account number as double also. 
//however, it would be good to treat it as String since you won't be 
//doing any special operation for it as a double, you only want the 
//account number as something that indicates the balances so string is enough. 

Wih關心從文本文件中提取數據,您可以使用FileReader。 link

在朝着分離每一行,爲您的地圖關鍵字和值的問題,您可以使用的StringTokenizer的javalink

另外請注意,如果你將要使用的文本文件將只包含2爲每一行分隔字符串,否則您需要爲其添加額外的處理。

StringTokenizer st = new StringTokenizer("1001 50.67"); //retrieved from text via file reader 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
    //implement mapping here, 
    //1001 as key and 50.67 converted to Double as its value in map 
} 
//rest of your code 

還要注意的是StringTokenizer提供了默認的分隔符,所以當文本文件,改變其格式它是如何分離帳戶號碼和相應的平衡,你可能需要修改添加到您的解析器爲這一個。您也可以指定上面提供的鏈接上顯示的分隔符。

StringTokenizer(String str, String delim) 

希望這會有所幫助。