Код уменьшает значение числа, если рядом с 0 в массиве.Когда я ставлю 0 на первое место в массиве, программа не работает - PullRequest
0 голосов
/ 13 ноября 2018

Попытка уменьшить значение числа в массиве, если оно находится рядом с определенным значением.

Я пытаюсь исправить ошибку в моем коде, когда он не будет правильно уменьшать числа в моем массиве, если они находятся рядом с нулем, а ноль - в первой или последней позиции. Я хочу, чтобы мой код выводил это:

Day 0: {0,6,7,9,3,5,6,1} 
Day 1: {0,3,7,9,3,5,6,1} 
Day 2: {0,1,7,9,3,5,6,1} 
Day 3: {0,0,7,9,3,5,6,1} 
Day 4: {0,0,3,9,3,5,6,1}    
Day 5: {0,0,1,9,3,5,6,1} 
Day 6: {0,0,0,4,3,5,6,1} 
Day 7: {0,0,0,2,3,5,6,1} 
Day 8: {0,0,0,1,3,5,6,1} 
Day 9: {0,0,0,0,1,5,6,1}   
Day 10: {0,0,0,0,0,5,6,1} 
Day 11: {0,0,0,0,0,2,6,1} 
Day 12: {0,0,0,0,0,1,6,1} 
Day 13: {0,0,0,0,0,0,6,1} 
Day 14: {0,0,0,0,0,0,3,1}    
Day 15: {0,0,0,0,0,0,1,1} 
Day 16: {0,0,0,0,0,0,0,1} 
Day 17: {0,0,0,0,0,0,0,1} 
Day 18: {0,0,0,0,0,0,0,0}    
---extinct---

Однако вместо этого выводится:

Day 295279: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295280: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295281: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295282: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295283: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295284: 0, 0, 7, 9, 3, 5, 6, 1.
Day 295285: 0, 0, 7, 9, 3, 5, 6, 1.

Он продолжает повторяться до бесконечности. Мой код следующий:

public class Final {
public static void main(String[] args) {
 int[] settlement = {3,6,7,0,3,5,6,1};

 int daycont=0;
 System.out.println("Day 0: "+settlement[0]+", "+settlement[1]+", "+settlement[2]+", "+settlement[3]+", "+settlement[4]+", "+settlement[5]+", "+settlement[6]+", "+settlement[7]+".");
 while(settlement[0]!=0 || settlement[1]!=0 ||settlement[2]!=0 || settlement[3]!=0 || settlement[4]!=0 || settlement[5]!=0 || settlement[6]!=0 || settlement[7]!=0) { 
  daycont++;
 for (int i=0; i<7; i++) {
  if (settlement[i]==0) {
   if(i!=7){
   i++;
   settlement[i]= settlement[i]/2;}
   if(i!=1 && i!=0)
   i=i-2;
   settlement[i]= settlement[i]/2;
   i++;
  }
 }

 System.out.println("Day "+daycont+": "+settlement[0]+", "+settlement[1]+", "+settlement[2]+", "+settlement[3]+", "+settlement[4]+", "+settlement[5]+", "+settlement[6]+", "+settlement[7]+".");
 }

for (int extcounter=0; extcounter<8; extcounter++) {
 if (settlement[extcounter]==0) {
  extcounter++;
  if (extcounter==8)
   System.out.println("----EXTINCT----");

 }

}}
}

Может кто-нибудь объяснить, почему он не работает должным образом? Я в замешательстве, я попытался найти и переполнить стек, но ничего не смог найти. (Обратите внимание, что я использую одномерный массив, и я только недавно запустил Java, поэтому у меня есть очень базовое понимание, и часть кода, который я видел в переполнении стека, я не совсем понимаю) Заранее спасибо. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...