我目前正在为一个班级编写程序。目的是使用户能够输入整数,并使用输入的大小初始化数组。然后,程序提示用户输入到每个阵列插槽的输入(等级如下所示)。当输入无效时,我们还应该利用while循环。我的问题是,要求升入一年级时,需要两个数字输入才能通过。
import java.util.Scanner;
public class ForWhile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int arraySize;
System.out.print("Gpa Calculator");
System.out.print("\nEnter total classes: ");
arraySize = scanner.nextInt();
double[] grades = new double[arraySize];
for (int i = 0; i < arraySize; i++) {
System.out.println("Enter grade for class " + (i + 1) + ": ");
grades[i] = scanner.nextDouble();
while (!scanner.hasNextDouble()) {
System.out.println("Percentage grades only please!");
System.out.println("Enter a grade for class " + (i + 1) + ": ");
grades[i] = scanner.nextDouble();
}
}
}
}
这是我目前编写的内容,但是我希望在控制台中输入2:
GPA Calculator
Enter grade for class 1: 90
Enter grade for class 2: 85
要使其进展,需要发生的事情:
GPA Calculator
Enter a grade for class 1: 90
90
Enter a grade for class 2: 85
我尝试使用scanner.hasNextLine(),但没有成功,我缺少什么?我还认为我的while循环条件无法正确循环,因此不胜感激!
您当前正在检查是否有要读取的double
。之后您已经读取了double
。这个,
grades[i] = scanner.nextDouble();
while (!scanner.hasNextDouble()) {
System.out.println("Percentage grades only please!");
System.out.println("Enter a grade for class " + (i + 1) + ": ");
grades[i] = scanner.nextDouble();
}
应该是
while (!scanner.hasNextDouble()) {
scanner.nextLine(); // consume the thing that isn't a double
System.out.println("Percentage grades only please!");
System.out.println("Enter a grade for class " + (i + 1) + ": ");
}
grades[i] = scanner.nextDouble();