Это в основном говорит мне, что мой массив не имеет длины ... почему? Я даже инициализировал его бессмысленным циклом!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