我正在编写一个简单的程序,提示用户输入学生的数量,然后要求用户输入每个学生的姓名和分数,以便确定哪个学生的分数最高。
我已经编写了程序代码,它可以编译。第一行要求输入一些学生,然后等待输入。第二行应该要求学生姓名并等待输入,然后第三行应该打印并要求输入该学生的分数,并等待输入,但在第二行打印后,第三行立即被调用(第二行不等待输入),然后在尝试在第三行之后输入请求的信息时出现运行时错误。
如何调整代码,使第二行打印,并在打印第三行之前等待输入字符串?
import java.util.Scanner;
public class HighestScore {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of students: ");
int numOfStudents = input.nextInt();
System.out.print("Enter a student's name: ");
String student1 = input.nextLine();
System.out.print("Enter that student's score: ");
int score1 = input.nextInt();
for (int i = 0; i <= numOfStudents - 1; i++) {
System.out.println("Enter a student's name: ");
String student = input.nextLine();
System.out.println("Enter that student's score: ");
int score = input.nextInt();
if (score > score1) {
student1 = student;
score1 = score;
}
}
System.out.println("Top student " +
student1 + "'s score is " + score1);
}
}
发布于 2011-10-24 22:56:08
System.out.print("Enter the number of students: ");
int numOfStudents = input.nextInt();
// Eat the new line
input.nextLine();
System.out.print("Enter a student's name: ");
String student1 = input.nextLine();
发布于 2013-08-01 16:07:07
哇,这看起来像是糟糕的设计--如果你请求一个整数并做一个nextInteger(),扫描器会给你一个整数,但现在它在缓冲区中保留了一个新的行字符,因为用户必须按enter来提交整数,所以如果你以后想提示用户输入一个字符串,它不会等待输入,只会返回一个新的行字符。你不能清除扫描仪来避免这类问题...
我遗漏了什么?
亚当
https://stackoverflow.com/questions/7877529
复制相似问题