这是为实现:(1)键盘录入一个小数,要求小数点后的小数位最少2位
(2)定义方法,实现保留小数点后的两位小数(只舍不进)
我的这几个方法都行不通,但又不知道原因,请那位大神给支支招???
private static void false1method() { //方法不完善,ArrayIndexOutOfBoundsException
Scanner c = new Scanner(System.in);
A: System.out.println("请输入一个小数点后的小数位最少2位的小数:");
double b = c.nextDouble();
String s = b + ""; //或者采用:s = String.valueOf(b);
String[] ss = s.split(".");
if(ss[1].length() < 1) {
System.out.println("您输入的数字有误,请重新输入:");
A:;
}
}
private static void false2method() { //方法不完善,ArrayIndexOutOfBoundsException
Scanner c1 = new Scanner(System.in);
while(true) { //方法替换
System.out.println("请输入一个小数点后的小数位最少2位的小数:");
double b = c1.nextDouble();
String s = b + ""; //或者采用:s = String.valueOf(b);
String[] ss = s.split(".");
if(ss[1].length() > 1) {
break;
}else {
String su = ss[0] + "."+ss[1].substring(0,2);
System.out.println(su);
}
}
}
private static void false3method() {
//IllegalArgumentException: Cannot format given Object as a Number
Scanner sca = new Scanner(System.in);
System.out.println("请输入一个至少有两位小数的小数:");
String sst = sca.nextLine();
DecimalFormat df = new DecimalFormat("00.##");
String nw = df.format(sst);
System.out.println(nw);
}
} |