黑马程序员技术交流社区

标题: JAVA为了不让键盘录入出bug,该怎么做的? [打印本页]

作者: SpiritsOfBlack    时间: 2015-12-16 09:33
标题: JAVA为了不让键盘录入出bug,该怎么做的?
举个例子:
import java,out.Scanner;
calss Demo_Scanner {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数,我们会输出它的2倍:");
                int x = nextInt();
                x *= 2;
                System.out.println("x的2倍是:" + x);
        }
}

键盘录入可以写任何数字、字母、符号,但是我们只限定了输入的是int类型的数字,如果输入其他的字母或者符号等等,就会报错,不会按照我们想要的结果输出。为了使这个代码更严谨,即使输入的不是我们规定的数据类型,也不会报错,只会输出“你输入的值不合法,请重新输入!”,直到输入规定的值才会输出结果。
记得好像是用try{}catch{}对吧?,该怎么用?新手提问,求大牛指导。


作者: 黑夜中那颗星    时间: 2015-12-16 11:13

  1. import java.util.Scanner;
  2. public class Demo_Scanner {
  3.         public static void main(String[] args) {
  4.                 Scanner sc = new Scanner(System.in);
  5.                 System.out.println("请输入一个整数,我们会输出它的2倍:");
  6.                 while (true) {
  7.                         String value = sc.next();// 先用字符串类型来接收输入的内容
  8.                         if (value.matches("[\\d]+")) {        //然后利用正则表达式判断输入的是否是数字
  9.                                 int x = Integer.parseInt(value);        //把字符串转换成int类型
  10.                                 x *= 2;
  11.                                 System.out.println("x的2倍是:" + x);
  12.                                 break;        //结束循环
  13.                         }
  14.                         else        //不是数字就提示错误
  15.                                 System.out.println("格式错误! 请继续输入");
  16.                 }
  17.                 sc.close();

  18.         }
  19. }
复制代码

作者: sooul    时间: 2015-12-16 11:22
nextInt(),只会接受下一个你输入的字符或数字,所以你只要判断一下输入的东西是不是匹配的类型就可以了,详细可以看看楼上代码,
作者: hrfhwy    时间: 2015-12-16 20:34
黑夜中那颗星 发表于 2015-12-16 11:13

这个程序写的很好,谢谢分享

作者: 乌合屁民    时间: 2015-12-16 21:47
haoliudeyangzi
作者: 尼玛大叔    时间: 2015-12-16 22:03
挺好的,加油





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