当我输入1条记录并选择1.添加记录时,它始终有错误。当我输入2条记录时,我只能输入1条记录,当我选择1.再次添加记录时,它会显示OutofBounds。我该如何解决这个错误?
public static int recno=0, recsize, choice, i=0;
public static void main (String args[]) throws IOException{
System.out.print("Enter Number of Records");
recsize = Integer.parseInt(reader.readLine());
String EmpNo[] = new String[recsize];
display_menu(EmpNo,recno);
}
public static void add_Rec(String EmpNo[], int recno) throws IOException{
++recno;
EmpNo[recno]= "EMP-"+ recno;
System.out.print("Employee Number: " + EmpNo[recno]);
System.out.print("\nEmployee Name: ");
display_menu(EmpNo,recno);
}
public static void display_menu(String EmpNo[], int recno) throws IOException{
System.out.println("Main Menu");
System.out.println("1. Add record");
System.out.println("Enter Your Choice");
choice = Integer.parseInt(reader.readLine());
if (choice==1){
add_Rec(EmpNo,recno);
}
}
答案 0 :(得分:1)
您应该替换以下内容:
++recno;
EmpNo[recno] = "EMP-" + recno;
使用:
if (recno < recsize) {
EmpNo[recno++] = "EMP-" + recno;
// ...
}
答案 1 :(得分:1)
您已将recno
初始化为零。
然后当你这样做
++recno;
recno
值增加到1。
但是在java数组索引中必须以0
将++recno;
更改为recno++;
正如上面的答案所说的还要检查索引值是否应该小于数组的大小,如此
if(recno<recsize) {
EmpNo[recno] = "EMP-" + recno;
System.out.print("Employee Number: " + EmpNo[recno]);
System.out.print("\nEmployee Name: ");
display_menu(EmpNo, recno);
}
答案 2 :(得分:0)
OutofBounds Exception即将发布,因为Java数组索引必须从0开始,其他人已经提到过。
但是我也有兴趣知道你是递归地调用display_menu(EmpNo, recno)
但是没有条件它会结束。
即使你能够解决OutofBounds异常,你也会以calling display_menu(EmpNo, recno
递归方式陷入StackOverflowError