import java.util.Scanner;
public class Hello {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int a;
String s;
System.out.println("Enter int : ");
a = in.nextInt();
System.out.println("Enter String : ");
s = in.nextLine();
System.out.println("int : "+a+"\nString : "+s);
}
}
我是Java的初学者。我创建了类Hello
并希望输入一个数字和一个字符串,但我认为s = in.nextLine();
此行被忽略。如何逐行输入两个值。
答案 0 :(得分:4)
当您使用Scanner.nextInt()
时,它不会消耗新行(或其他分隔符)本身,因此返回的下一个标记通常是空字符串。因此,您需要使用Scanner.nextLine()
来关注它。您可以放弃结果,而不是将结果分配给a
:
int a = in.nextInt();
in.nextLine();
出于这个原因,我建议总是使用nextLine
(或BufferedReader.readLine()
)并在使用Integer.parseInt()
后进行解析。
答案 1 :(得分:1)
而不是
s = in.nextLine();
试
in.nextLine();
s = in.nextLine();
对nextInt()的调用仍会留下尾随换行符。
调用in.nextLine()实际上转到下一行。然后in.nextLine将获得您的实际结果。
答案 2 :(得分:0)
尝试这样:D
import java.util.Scanner;
public class Hello {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int a;
String s = null;
System.out.print("Enter int: ");
a = in.nextInt();
while ((s = in.nextLine()).trim().isEmpty()) {
System.out.print("Enter String: ");
}
System.out.println("int : " + a + "\nString : " + s);
}
}
答案 3 :(得分:0)
import java.util.Scanner;
public class Hello{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int a;
String s;
System.out.println("Enter int : ");
a = in.nextInt();
System.out.println("Enter String : ");
s = in.next();
System.out.println("int : "+a+"\nString : "+s);
}
}