还有其他可能将String转换为double吗?

时间:2019-05-06 23:36:04

标签: java

我正在学习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());
}   

如果有人能帮助我理解为什么转换和分配不起作用,那将是很好的。

1 个答案:

答案 0 :(得分:0)

点将整数和小数部分都用Double表示。在products.txt中,将逗号更改为价格中的点。这应该有所帮助:)