这基本上告诉我,我的数组没有长度...为什么?我甚至用无意义的循环初始化它!java - ArrayIndexOutOfBoundsException:0
public class NumberCollection{
public int arraySize;
public int count=0;
Scanner in = new Scanner(System.in);
public NumberCollection(int arraySiz){
if(arraySiz>0){
arraySize=arraySiz;
}
else{
arraySize=1;
}
}
int[] numberArray = new int[arraySize];
public void doThis(){
for(int q=0; q<arraySize; q++){
numberArray[q]=0;
}
}
public int indexOf(int searchingNum){
Arrays.sort(numberArray);
int lo=0;
int hi=numberArray.length;
while(lo<hi){
int i=(lo+hi)/2;
if(numberArray[i]==searchingNum){
return i;
}
else if(numberArray[i]<searchingNum){
lo=i;
}
else{hi=i;}
}
return -1;
}
public boolean addNumber(int number){
NumberCollection col = new NumberCollection(arraySize);
if(col.indexOf(number)==(-1)){
if(count==arraySize){
numberArray=Arrays.copyOf(numberArray,(arraySize*2));
numberArray[count]=number;
count++;
return true;
}
else{
numberArray[count]=number; //This is where the exception is.
count++;
return true;
}
}
else {
return false;
}
}
public static void main(String[] args){
NumberCollection col = new NumberCollection(5);
col.doThis();
col.addNumber(4);
}
}
但如果我这样做,那么阵列将不就是块的外部可见 – Taylor
声明它作为一个字段,并在构造函数中新的数组。 – Radiodef
好吧,用这个,现在indexOf方法不返回一个值。 – Taylor