黑马程序员技术交流社区

标题: 各位大神们,我这里有个技术性问题,请能人相助——急!!! [打印本页]

作者: wx_QrM5tXqT    时间: 2016-3-17 16:47
标题: 各位大神们,我这里有个技术性问题,请能人相助——急!!!
这是为实现:(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);
        }
}
作者: ShallDoll    时间: 2016-3-17 21:11
可以用String先接收,然后用split分割\\.取第二个元素转成字符数组,取前两个元素.再拼接成一个数字.
目前只学到集合,有没有其他办法我也不知道,求大神告知.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2