Ваш остаток не будет равен 0, пока a не достигнет значения colAvgs, и после этого попытка доступа к convbases [a] завершится сбоем.
Ваше время должно учитывать, что a не может быть выше илиравно чем colAvgs.
int size = colAvgs.length;
for (int a =0;a<size;a++)
{
remainder = colAvgs[a];
while(remainder>0 && a<size)
{
remainder = remainder%2;
if ((remainder%2)==0|| (remainder%2)==1)
{
convbases[a] = Integer.toString(remainder);
a++;
}//end if
}//end while
}//end for
if(remainder>0) //you know it finished due to a being too big.
else //this is what you want to happen
Однако я думаю, что важно отметить, что хорошей практикой является не изменять циклическую переменную внутри цикла for, поскольку это является частью работы for. Вы не должны делать a++
внутри цикла while. Вы используете цикл for, когда точно знаете количество итераций, которые цикл будет выполнять. У вас нет этой информации здесь. Таким образом, вы должны либо изменить условие цикла (в данном случае a<size
при запуске цикла for), либо использовать вместо него цикл while.