输入一个商品的单价和数量,计算总金额,要求对单价(可以是小数)和数量进行验证

问题遇到的现象和发生背景

输入一个商品的单价和数量,计算总金额,要求对单价(可以是小数)和数量进行验证

问题相关代码,请勿粘贴截图

/**

  • 输入一个商品的单价和数量,计算总金额,要求对单价(可以是小数)和数量进行验证
  • /
    package com.study.string;

import java.util.Scanner;

public class TestInteger2 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
String price;
String regex="^[1-9]{1}[0-9]{3,6}[.]{1}[0-9]{1}$";
int amount;
//System.out.println("请输入商品的单价:");
//price=sc.next();
System.out.println("请输入商品的数量:");
amount=sc.nextInt();
while(true) {
System.out.println("请输入商品的单价:");
price=sc.next();
if(!price.matches(regex)) {
System.out.println("数据格式错误");
continue;
}
break;
}
Double intprice1= (double) Integer.parseInt(price);
Double sum=intprice1*amount;
System.out.println(sum);
}
}

运行结果及报错内容

img

img

我想要达到的结果

输入单价price后可以正确输出总价sum

带小数点的数怎么能用Integer.parseInt()呢?改为Double.parseDouble()

package com.study.string;
import java.util.Scanner;

public class TestInteger2 {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        String price;
        String regex="^[1-9]{1}[0-9]{3,6}[.]{1}[0-9]{1}$";
        int amount;
//System.out.println("请输入商品的单价:");
//price=sc.next();
        System.out.println("请输入商品的数量:");
        amount=sc.nextInt();
        sc.nextLine();
        while(true) {
            System.out.println("请输入商品的单价:");
            price = sc.nextLine();
            if(!price.matches(regex)) {
                System.out.println("数据格式错误");
                continue;
            }
            break;
        }
        Double intprice1= Double.parseDouble(price);
        Double sum=intprice1*amount;
        System.out.println(sum);
    }
}