爲什麼數組值不能保存在我的開關功能中? 首先我按1,創建我的花名冊值。在創建值之後,我按2它會導致ArrayOutOfBound錯誤。誰能告訴我我做錯了什麼?爲什麼在開關情況下數組值不能傳遞?
請忽略FileNotFoundExceptions。在我解決我做錯了什麼之後,需要在那部分工作。
public static Scanner keyboard = new Scanner(System.in);
public static int numStudents;
public static String[] nameOfStudent;
public static int[] broncoID;
public static int[] grade;
^這些都是我聲明的變量
public static void main(String[] args) throws FileNotFoundException {
startMenus(keyboard);
}
public static void startMenus(Scanner sc) throws FileNotFoundException {
while (true) {
System.out.println("(Enter option # and press ENTER)\n");
System.out.println("1. Create new Roster");
System.out.println("2. Display Current Roster");
int option = sc.nextInt();
sc.nextLine();
switch (option) {
case 1:
createRoster();
break;
case 2:
displayRoster();
break;
default:
System.out.println("Unrecognized Option!\n");
}
}
}
public static void createRoster() throws FileNotFoundException {
System.out.println("Please list how many students there are.");
numStudents = keyboard.nextInt();
nameOfStudent = new String[numStudents];
broncoID = new int[numStudents];
grade = new int[numStudents];
keyboard.nextLine();
for(int i = 0; i < numStudents; i++){
System.out.println("Please enter full name of Student.");
nameOfStudent[i] = keyboard.nextLine();
System.out.println("Now please enter the BroncoID of Student.");
broncoID[i] = keyboard.nextInt();
System.out.println("Now please enter grade of Student (0-100)");
grade[i] = keyboard.nextInt();
keyboard.nextLine();
}
System.out.println("Roster successfully created!");
for (int i = 0; i < numStudents ; i++){
System.out.printf("Name: %9s\t Bronco ID: %5d \t Grade: %2d \n", nameOfStudent[i], broncoID[i], grade[i]);
}
}
public static void displayRoster(){
System.out.printf("Name: %9s\t Bronco ID: %5d \t Grade: %2d \n", nameOfStudent[1], broncoID[1], grade[1]);
}
在第一種情況下printf的工作,但它不會在第二種情況下工作。錯誤我得到:
您使用2例switch語句Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Roster.displayRoster(Roster.java:115)
at Roster.startMenus(Roster.java:36)
at Roster.main(Roster.java:16)
在哪條線上出現錯誤? – proudandhonour
爲什麼你的開關盒裏沒有'case 4'? –
在你的代碼中,你在nameOfStudent,broncoID和grade數組中添加記錄在位置0,因爲數組從0開始,而在displayRoster方法中,你從數組的1個位置檢索,所以它引起異常。 – proudandhonour