使用nextInt()方法后使用nextLine()方法

时间:2017-07-14 10:38:47

标签: java stdin scanning

使用nextLine方法后,我无法使用nextInt方法。这是下面给出的注释....

请注意黑客排名:(如果您在nextLine()方法之后立即使用nextInt()方法,请回想一下nextInt()读取整数标记;因此,最后一个换行符就是整数输入行仍然在输入缓冲区中排队,下一个nextLine()将读取整数行的剩余部分(为空)。 nextLine方法没有被滑落,但它是空的。 代码:

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    double d=scan.nextDouble();
    String s=scan.nextLine();
    // Write your code here.

    System.out.println("String: " + s);
    System.out.println("Double: " + d);
    System.out.println("Int: " + i);
  }
}

输出: 串: 双倍:3.1415 Int:42

4 个答案:

答案 0 :(得分:3)

在Scanner类中,如果我们在七个nextXXX()方法中的任何一个之后调用nextLine()方法,则nextLine()不会从控制台读取值,并且光标将不会进入控制台,它将跳过该步骤。 nextXXX()方法是nextInt(),nextFloat(),nextByte(),nextShort(),nextDouble(),nextLong(),next()。

这是因为Scanner#nextInt方法不消耗输入的最后一个换行符,因此在下次调用Scanner#nextLine时会消耗该换行符。

您可以在Scanner#nextInt之后触发空白的Scanner#nextLine调用以消耗该行的其余部分,包括换行符

int option = input.nextInt();
input.nextLine();  // Consume newline left-over
String str1 = input.nextLine();

答案 1 :(得分:0)

是的,它会读取剩余的空行。因此,在给输入传递空格时,您将看到输出,而不是打印字符串打印它的长度

答案 2 :(得分:0)

你可以试试这个。

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        double y = sc.nextDouble();
        sc.nextLine();
        String s = sc.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + y);
        System.out.println("Int: " + x);

}

答案 3 :(得分:0)

当您为nextInt()输入整数时,立即输入密钥,此输入密钥由nextLine()捕获。 s商店进入,这被称为空白,所以它不显示。