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

© star5603 高级黑马   /  2014-7-20 13:06  /  1063 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 star5603 于 2014-7-21 19:07 编辑

看老毕的视频没有Scanner,但是好多地方都有,不是很懂。比如:
public static void main(String[] args) {
               
                Scanner in = new Scanner(System.in);
                boolean flag = true;//标记
               
                do {
                        try {
                                System.out.println("Enter a integer:");
                                int num = in.nextInt();
                                System.out.println("num:" + num);
                                //只要输入的数为正数,则循环结束
                                flag = false;
                        } catch (Exception e) {
                                System.out.println("the num is not a integer!");
                                in.nextLine();//就是这个地方不懂,为什么是nextLine()
                        }
                } while (flag);
        }

3 个回复

倒序浏览
nextLine();此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。  因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。
回复 使用道具 举报
止询初衷 发表于 2014-7-20 14:28
nextLine();此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分 ...

那函数中的nextLine(),为什么换成nextInt()就会变成死循环,而nextLine()不会。
回复 使用道具 举报
try {
                                System.out.println("Enter a integer:");
                                int num = in.nextInt();
                                System.out.println("num:" + num);
                                //只要输入的数为正数,则循环结束
                                flag = false;
                        }
nextInt(),是将输入信息的下一个标记扫描为一个 int。try里面的是循环,这里输入的数,可能不是只一个,如果后面还用nextInt输出,肯定错。而nextLine()可多个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马