解析时使用nextInt()和nextLine()之间的区别

时间:2019-09-25 18:21:10

标签: java

我的CS教授建议使用nextLine()方法并解析出整数,而不是使用nextInt()方法。我只是想知道为什么要使用nextLine()而不是nextInt()。

例如:

Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
String input = in.nextLine();
int num = Integer.parseInt(input);

代替:

Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
int input = in.nextInt();

2 个答案:

答案 0 :(得分:1)

我的推理是,因为学生认为输入只是被神奇地读取为int,boolean,long等,而忽略了它实际上如何变为原始数据类型这一事实。其他语言(尤其是Java的对应C#语言)要求您首先将输入作为字符串读入,然后将其解析为适当的数据类型。

使用nextInt时还有new line character problem with Scanner

答案 1 :(得分:0)

当调用nextInt()方法时,输入流的当前位置跳到下一个输入的String。然后按Enter键,您将手动跳到下一行。

但是,当调用nextLine()方法时,输入流立即跳到下一行。

将nextInt()方法放入循环中可能会使函数在能够键入之前先读取一些内容,而这是您不希望的。

        Scanner sc = new Scanner(System.in);
        int x;
        do{
            try{
                x = sc.nextInt();
                break;
            }

            catch(InputMismatchException e){
                System.out.print("Enter an Integer");
            }
        }while(true);       

永久运行循环,而

        Scanner sc = new Scanner(System.in);
        int x;
        do{
            try{
                x = Integer.parseInt(sc.nextLine());
                break;
            }

            catch(NumberFormatException e){
                System.out.print("Enter an Integer");
            }
        }while(true);       

不是