A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luheqi 中级黑马   /  2014-7-1 21:32  /  2892 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 luheqi 于 2014-7-2 10:46 编辑
  1. Scanner input = new Scanner(System.in);
  2.         int num = 0;

  3.         while (true) {
  4.             try {
  5.                 System.out.println("请输入一个整数:");
  6.                // num =Integer.parseInt( input.nextLine());
  7.                 num = input.nextInt();
  8.                 if (num == 0) break;
  9.             } catch (InputMismatchException e) {
  10.                 System.out.println("必须输入整数!请重新输入:");
  11.                 input.nextLine();
  12.             }
  13.         }
复制代码

点评

没有12行会死循环。。。  发表于 2014-7-1 21:36

5 个回复

倒序浏览
{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}
回复 使用道具 举报
本帖最后由 luheqi 于 2014-7-2 10:50 编辑

nextInt() 接收一个整型字符,nextline()读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
串值的一部分

如下代码:
int n = sc.nextInt()
String s1 = sc.nextLine();
String s2 = sc.nextLine();
假设输入:
42
and don't you
forget it
在这种情况下,n的值为42,s1设置为空白字符,s2设置为and don't you
因为nextInt()读入42,但并没有读入"\n",因此S1调用42所在行的剩余部分所以,nextInt()等deng要和nextLine()等混用的即觉方法就是:
在每一个next()、nextInt()、nextDouble()等后加一条nextLine()语句,将被next()去掉的Enter过滤掉。也就是说nextLine()有吃掉回车的作用。



所以把前面代码的第12行去掉,如果输入的不是整数,其实还有数据在其中没清除,nextInt一直会读到那个错误的数据,所以会死循环。
加入nextLine后,会把刚刚输入的错误数据越过读入,重新进入输入等待。
把 上面的修改成下面的,调试就知道了:

Scanner input = new Scanner(System.in);
        int num = 0;

        while (true) {
            try {
                System.out.println("请输入一个整数:");
               // num =Integer.parseInt( input.nextLine());
                num = input.nextInt();
                if (num == 0) break;
            } catch (InputMismatchException e) {
                System.out.println("必须输入整数!请重新输入:");
            String  str = input.nextLine();
                System.out.println(str);
            }
        }


结果:
请输入一个整数:
4
请输入一个整数:
sdfdsf
必须输入整数!请重新输入:
sdfdsf
请输入一个整数:
32
请输入一个整数:



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
学习学习。。。。。。。。。
回复 使用道具 举报
dispensable 来自手机 中级黑马 2014-7-2 13:40:04
报纸
正在学io,谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马