我是Java的新手学生,正在尝试完成一个使用扫描仪输入5个学生姓名的程序,然后在其中进行循环以为每个学生获得3个成绩。我一直卡在输入错误匹配错误,我不知道为什么。我试图正确匹配将哪些类型的输入输入到变量中。任何帮助将不胜感激!
这就是我所拥有的:
import java.util.Scanner; public class StudentGrades { public static void main(String[] args) { Scanner input = new Scanner(System.in); // Declare arrays, grades to hold [student #][course] and correspond to the grade. studentNames to be paralell and hold the names. int [][] grades; grades = new int[5][3]; String[] studentNames = new String[5]; int studentNumber = 0; int courseNumber = 0; // Create loops to put values in both arrays, using student# as a counter if (studentNumber < 5) { System.out.println("Enter the student name"); studentNames[studentNumber] = input.next(); // Nested loop to enter the grades if (courseNumber < 5) { System.out.println(" Enter a grade for " + studentNames[studentNumber]+" for course #" + courseNumber); grades[studentNumber][courseNumber] = input.nextInt(); courseNumber = courseNumber + 1; } studentNumber = studentNumber + 1; } } }
这就是我得到的:
Exception at thread "main" java.util.InputMismatchException at java.util.Scanner.throwfor{Scanner.java:909} at java.util.Scanner.next{Scanner.java:1530} at java.util.Scanner.nextInt{Scanner.java:2160} at java.util.Scanner.nextInt{Scanner.java:2119} at StudentGrades.main{StudentGrades.java:20}
您的问题在第20行。
grades[studentNumber][courseNumber] = input.nextInt();
这意味着在输入中,它期望一个int值,但它会发现另一件事,例如double,char数组或其他任何东西
还有另一个问题,您将成绩声明为:
grades = new int[5][3];
最后一个数字表示您可以访问[0..4] [0..2]中的成绩
但是你的if语句:
if (courseNumber < 5)
表示您将访问大于“ 2”的数字
这将引发 OutOfBoundsException
OutOfBoundsException