【问题描述】
编写一个程序,让用户输入两个数值作为长方形的长和宽,计算两个数值的成绩作为面积并输出结果,要求:
1.支持小数作为长宽
2.结果一律保留两位小数(可通过BigDecimal或NumberForamt两种方式实现,请都尝试使用)
3.用户有可能输入错误,输入的不是数值,程序检测出异常不再进行计算,直接输出input error
【样例输入】
3 5
【样例输出】
15.00
【样例输入】
0.2 0.7
【样例输出】
0.14
【样例输入】
12 3.531
【样例输出】
42.37
【样例输入】
12 1c3
【样例输出】
input error
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
double a1 = 0.00;
double b1 = 0.00;
try {
a1 = Double.parseDouble(a);
b1 = Double.parseDouble(b);
//法一
// BigDecimal bd = BigDecimal.valueOf(a1*b1);
// BigDecimal area = bd.setScale(2, RoundingMode.HALF_UP);
// System.out.println(area);
//法二
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);
nf.setGroupingUsed(false);
String area = nf.format(a1*b1);
System.out.println(area);
} catch (Exception e) {
System.out.println("input error");
}
}
}
如果对数字的小数点后保留几位的操作感兴趣的,可以查看这篇文章
保留几位小数的5种常见方法
上面这个文章所在的专栏后续会继续更新,如有需要请关注