[英]How do I loop through each array item and divide by two?
數組居民代表城市及其各自的人口。 例如,以下數組顯示了 8 個城市及其各自的人口:
[3, 6, 0, 4, 3, 2, 7, 1]
由於大流行的僵屍病正在消滅人類的生命,一些城市的人口為 0。 每一天之后,每個城市都會失去一半的人口。 編寫一個程序來循環遍歷每個城市的人口並使其失去一半的人口,直到所有城市都沒有人為止。 更新數組中的每個元素並每天打印如下數組:
Day 0 [3, 6, 0, 4, 3, 2, 7, 1]
Day 1 [1, 3, 0, 2, 1, 1, 3, 0]
Day 2 [0, 1, 0, 1, 0, 0, 1, 0]
Day 3 [0, 0, 0, 0, 0, 0, 0, 0]
---- EXTINCT ----
問題是當我輸入 [3, 6, 0, 4, 3, 2, 7, 1] 時,它給了我兩個帶零的額外數組行;
Day 0 [3, 6, 0, 4, 3, 2, 7, 1]
Day 1 [1, 3, 0, 2, 1, 1, 3, 0]
Day 2 [0, 1, 0, 1, 0, 0, 1, 0]
Day 3 [0, 0, 0, 0, 0, 0, 0, 0]
Day 4 [0, 0, 0, 0, 0, 0, 0, 0]
Day 5 [0, 0, 0, 0, 0, 0, 0, 0]
---- EXTINCT ----
當我在 for 循環中嘗試residents.length-2時,它可以工作,但是當輸入不同時它會產生另一個問題,例如;
20
20
0
20
20
10
0
10
這是我的代碼;
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] inhabitants = new int[8];
for(int i=0; i<inhabitants.length; i++) {
inhabitants[i] = input.nextInt();
}
int day = 0;
System.out.println("Day " + day + " "+ Arrays.toString(inhabitants));
for (int i = inhabitants.length/2; i <= inhabitants.length-2; i++) {
for (int j =0; j < inhabitants.length; j++) {
inhabitants[j] /= 2;
}
day++;
System.out.println("Day " + day + " "+ Arrays.toString(inhabitants));
}
System.out.println("---- EXTINCT ----");
}
}
你的外循環條件應該是inhabitants
沒有完全被零填充。 就像是,
int day = 0;
System.out.println("Day " + day + " " + Arrays.toString(inhabitants));
while (!Arrays.stream(inhabitants).allMatch(x -> x == 0)) {
day++;
for (int i = 0; i < inhabitants.length; i++) {
inhabitants[i] /= 2;
}
System.out.println("Day " + day + " " + Arrays.toString(inhabitants));
}
System.out.println("---- EXTINCT ----");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.