使用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
答案 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商店进入,这被称为空白,所以它不显示。