为什么 java.lang.ArrayIndexOutOfBoundsException 发生在这段代码上?
Why does java.lang.ArrayIndexOutOfBoundsException happen on this piece of code?
public boolean felGissningar(char gi, int antalfel){
if(antalfel>0){
int test = 0;
for (int i = 0; i<felGiss1.length; i++){
if(gi == felGiss1[i]){
test+=1;
}
}
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length; i++){
felGiss2[i]=felGiss1[i];
}
felGiss1 = new char[antalfel+1];
for (int i =0;i<antalfel; i++){
felGiss1[i]=felGiss2[i];
}
felGiss1[antalfel] = gi;
System.out.println("1: "+String.valueOf(felGiss1));
System.out.println("2: "+String.valueOf(felGiss2));
if(test>0){
return false;
} else {
return true;
}
}else {
felGiss1 = new char[1];
felGiss1[0]=gi;
return true;
}
}
antalfel 表示错误答案的数量
此布尔值一旦显示 java.lang.ArrayIndexOutOfBoundsException
就返回 false
我想做的是不允许两次出现相同的错误字符。
这边:
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length; i++){
felGiss2[i]=felGiss1[i];
}
由于您没有 post 创建 felGiss1
的地方,如果 felGiss1.length
大于 felGiss2.length
那么它将产生异常。请更改为:
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length && i < fellGiss2.length; i++){
felGiss2[i]=felGiss1[i];
}
public boolean felGissningar(char gi, int antalfel){
if(antalfel>0){
int test = 0;
for (int i = 0; i<felGiss1.length; i++){
if(gi == felGiss1[i]){
test+=1;
}
}
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length; i++){
felGiss2[i]=felGiss1[i];
}
felGiss1 = new char[antalfel+1];
for (int i =0;i<antalfel; i++){
felGiss1[i]=felGiss2[i];
}
felGiss1[antalfel] = gi;
System.out.println("1: "+String.valueOf(felGiss1));
System.out.println("2: "+String.valueOf(felGiss2));
if(test>0){
return false;
} else {
return true;
}
}else {
felGiss1 = new char[1];
felGiss1[0]=gi;
return true;
}
}
antalfel 表示错误答案的数量
此布尔值一旦显示 java.lang.ArrayIndexOutOfBoundsException
就返回 false我想做的是不允许两次出现相同的错误字符。
这边:
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length; i++){
felGiss2[i]=felGiss1[i];
}
由于您没有 post 创建 felGiss1
的地方,如果 felGiss1.length
大于 felGiss2.length
那么它将产生异常。请更改为:
felGiss2 = new char[antalfel];
for (int i = 0; i<felGiss1.length && i < fellGiss2.length; i++){
felGiss2[i]=felGiss1[i];
}