【发布时间】:2014-10-09 14:37:07
【问题描述】:
只有一个问题:为什么我必须输入两次answer = in.nextLine();?如果此行是单行,则程序无法按预期工作。如果没有第二行,程序不会要求您输入字符串。
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String answer = "Yes";
while (answer.equals("Yes")) {
System.out.println("Enter name and rating:");
String name = in.nextLine();
int rating = 0;
if (in.hasNextInt()) {
rating = in.nextInt();
} else {
System.out.println("Error. Exit.");
return;
}
System.out.println("Name: " + name);
System.out.println("Rating: " + rating);
ECTS ects = new ECTS();
rating = ects.checkRating(rating);
System.out.println("Enter \"Yes\" to continue: ");
answer = in.nextLine();
answer = in.nextLine();
}
System.out.println("Bye!");
in.close();
}
}
【问题讨论】:
-
你不需要写两次。 o.o
-
nextInt()留下一个换行符。您的第一个nextLine()将吞噬它。第二个nextLine()将读取您的yes数据 -
@Zhuinden - 他正在使用
nextInt(),他将不得不使用。 -
@TheLostMind 哦,这就像 C 语言中
scanf的问题。我总是使用BufferedReader,所以我没有遇到过这样的问题。感谢您的回答! -
@Zhuinden - Scanner 通常用于解析,
FileReader/BufferedReader通常用于阅读