2016-02-06 2 views
0

Я хочу добавить продукты в массив в определенном порядке (от самого маленького до большого), но по какой-то причине код пропускает цикл for, который выполняет перемещаемую часть. Я попытался сделать условие «products.length-2», но он все еще не работает.Почему цикл for не пропускается?

if(products!=null){ 
    for(int i=0; i<products.length; i++){ 
    if(products[i]!=null && product.getItemNum() < products[i].getItemNum()){ 
     index=i; 
     temp = products[index]; 
     for(int j=products.length-1; j<=0; j--){ 
     products[j+1]= products[j]; 
     } 
     products[index]= product; 
    } 
    } 
} 
+0

Проверьте ваше Если условие правильно. –

ответ

3

Давайте рассмотрим, что ваш массив products содержит 2 элемента. Первая итерация внутреннего for цикла:

for(int j=products.length-1; j<=0; j--){ 

будет вычисляться:

for(int j = (2) - 1; j<=0; j--){ 

Так как вы можете видеть, ваше состояние терминатора является источником проблемы. И так как вы отсчитывается, он должен быть j >= 0, не j <= 0:

for(int j=products.length-1; j >= 0; j--){ // j >= 0 
    products[j+1]= products[j]; 
} 
+1

ой! ты прав. Спасибо. – Chie

Смежные вопросы