黑马程序员技术交流社区

标题: nextLine()的重要作用 12行 [打印本页]

作者: luheqi    时间: 2014-7-1 21:32
标题: nextLine()的重要作用 12行
本帖最后由 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.         }
复制代码

作者: 这个夏天的芬芳    时间: 2014-7-1 21:46
{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}{:2_31:}
作者: luheqi    时间: 2014-7-2 10:30
本帖最后由 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
请输入一个整数:




作者: weitz    时间: 2014-7-2 13:34
学习学习。。。。。。。。。
作者: dispensable    时间: 2014-7-2 13:40
正在学io,谢谢分享




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