Sar*_*til -1 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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:字符串:双精度:3.1415整数:42
小智 6
你可以试试这个。
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);
}
Run Code Online (Sandbox Code Playgroud)
在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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3254 次 |
| 最近记录: |