2015-09-23 27 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) 

希望这会有所帮助。