我正在学习Java,并且在我的一个项目“销售点”中遇到问题。当程序从用户读取条形码时,它将开始在products.txt中搜索正确的产品。找到产品后,接下来应将值设置为创建的对象。当我尝试将String转换为double时,会出现问题。我花了将近2个小时来解决它,但没有成功。我需要你的帮助。
所以我尝试了:
double dbl = Double.valueOf(parts[2]);
p.set_price(dbl);
double dbl = Double.parseDouble(parts[2]);
p.set_price(dbl);
double dbl = new Double(parts[2]);
p.set_price(dbl);
还尝试了这样的组合(但不起作用):
p.set_price(Double.valueOf(parts[2].ToString()));
只有一种方法
public void newSale() {
Products p = new Products();
// Barcode
System.out.print("Barcode:");
p.set_barcode(scan.next());
// Find the product
try{
File file = new File("products.txt");
Scanner scan = new Scanner(file);
while(scan.hasNextLine()) {
String x = scan.next();
if(x.contains(p.get_barcode())) {
String[] parts = x.split(";");
p.set_barcode(parts[0]);
p.set_name(parts[1]);
try{
double dbl = Double.valueOf(parts[2]);
p.set_price(dbl);
}catch(NumberFormatException ex){
System.err.println("Error: " + ex.getMessage());
}
}
}
}catch(Exception e){
System.err.println("Error: " + e.getMessage());
}
System.out.print(p.get_name()+"\t"+p.get_price());
}
如果有人能帮助我理解为什么转换和分配不起作用,那将是很好的。
答案 0 :(得分:0)
点将整数和小数部分都用Double表示。在products.txt中,将逗号更改为价格中的点。这应该有所帮助:)