[英]array index out of bounds in java
我正在嘗試制作一個程序,其中將提示用戶輸入多少輸入。 我的多數組中有3個用戶輸入,如果用戶輸入1,則只會出現一個用戶輸入。 否則,如果用戶輸入2或3,則將出現2或3個用戶輸入。 測試我的程序后,它運行了,但是出現了java.lang.ArrayIndexOutOfBoundsException錯誤。 我似乎在這里找不到錯誤,我嘗試在多數組上添加額外的索引,但仍然遇到相同的錯誤。
import java.io.*;
public class student {
private int stud_id;
private String stud_prog;
Object ctr1;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Object stud [][] = {{1,2,3},{"enter name:","enter age:","enter gender:"}};
public void stud() throws NumberFormatException,IOException{
System.out.print("Enter How Many Inputs: ");
int num1 = Integer.parseInt(in.readLine());
for (int x = 1; x<=num1;x++){
for (int i = 0 ; i<num1;){
System.out.println(stud[x][i]);
ctr1 =in.readLine();
i++;
}
}
}
}
///////////////////////////////////////////////////// /////////////////主要//////////////////////////////// /////////////////////////////////////////////////////
import java.io.IOException;
public class persontest {
public static void main(String[]args) throws NumberFormatException,IOException{
student s = new student();
s.stud();
}
}
數組索引從0開始,到長度為1
更改:
for (int x = 1; x<=num1;x++){
至:
for (int x = 0; x<num1;x++){
迭代前先檢查數組的長度
if(num1<=stud.length){
for (int x = 0; x<num1;x++){
....
}
}
注意:多維數組可以包含列的變量號。 您應該使用stud[row].length
獲取任何行的列數。
stud.length
提供任何行 stud[i].length
給出第i行的列數 根據評論
我的意思是,如果用戶輸入1,則將出現1個用戶屬性,如果出現2,則出現2,依此類推...
這是你要找的東西嗎?
String stud[] = { "enter name:", "enter age:", "enter gender:" };
System.out.print("Enter How Many Inputs: ");
int num1 = Integer.parseInt(in.readLine());
if (num1 <= stud.length) {
for (int x = 0; x < num1; x++) {
System.out.println(stud[x]);
//read input from user
}
}
Java使用零索引數組,這意味着計數從0(不是1!),1、2、3、4開始。
這意味着當您嘗試引用array [4]時,它實際上是在數組中獲取第五個元素(如果不存在,則為ArrayIndexOutOfBoundsException!)
您可以通過將for循環更改為如下所示來修復它: 它從零開始,直到(但不等於)num1。
for(int x = 0; x < num1; x++) {
for (int x = 1; x<=num1;x++){
for (int i = 0 ; i<num1;){
System.out.println(stud[x][i]);
ctr1 =in.readLine();
i++;
}
}
在這里它將在兩個for循環中運行。 第一個從1到num1開始。 但在下一次迭代中,調用stud[x][i]
x將為2。 但螺柱僅具有索引0,1。 請檢查您的邏輯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.