猿问

每个数组的元素除以 2

在这个数组中,我试图在每次循环后输出每个元素的一半,直到数组的所有元素都变成零,如 [0,0,0,0,0,0,0,0]。假设我的数组是 [3, 6, 0, 4, 3, 2, 7, 1] 但我的程序在每个元素为零之后执行此操作,然后转到下一个。

第 1 天 [1, 6, 0, 4, 3, 2, 7, 1]

第 2 天 [0, 6, 0, 4, 3, 2, 7, 1]

第 3 天 [0, 3, 0, 4, 3] , 2, 7, 1]

第 4 天 [0, 1, 0, 4, 3, 2, 7, 1]

第 5 天 [0, 0, 0, 4, 3, 2, 7, 1]

...

怎么办我像这样在每次循环后将每个元素减半;


第 0 天 [3, 6, 0, 4, 3, 2, 7, 0]

第 1 天 [3, 3, 0, 2, 3, 2, 3, 0]

第 2 天 [3, 1, 0, 1, 3] , 2, 1, 0]

第 3 天 [3, 0, 0, 0, 3, 2, 0, 0]

第 4 天 [1, 0, 0, 0, 1, 1, 0, 0]

第 5 天 [0, 0, 0, 0, 0, 0, 0, 0]


到目前为止,这是我的代码:


import java.util.Arrays;

import java.util.Scanner;


public class Zombi2 {

    public static void main(String[] args) {

        boolean cond = false;

        Scanner input = new Scanner(System.in);

        int[] inhabitants = new int[8];

        for(int i=0; i<inhabitants.length; i++) {

          inhabitants[i] = input.nextInt();

        }



        for(int x : inhabitants) {

            if(x != 0) cond =  true;

        }


        int t = 1;

        while(cond) {

            cond = false;

            for(int x=0; x<inhabitants.length; x++) {

                while(inhabitants[x]>0) {

                    inhabitants[x] = inhabitants[x]/2;

                    if(inhabitants[x] != 0) cond = true;

                    System.out.println("Day " + t + " " + Arrays.toString(inhabitants));

                    t++;

                }

            }

        }



        do {

            for(int x : inhabitants) {

                if(x != 0) cond =  true;

            }

        }while(cond);

        System.out.println("---- EXTINCT ----");

    }

}


哈士奇WWW
浏览 285回答 1
1回答

catspeake

您必须交换循环。该while回路必须在外部和for环内:我相信所有的整数都是正因此受到检查,如果它们的总和为0,循环停止。我认为这会奏效:&nbsp; &nbsp; int sum = 1;&nbsp; &nbsp; int day = 1;&nbsp; &nbsp; while (sum > 0) {&nbsp; &nbsp; &nbsp; &nbsp; sum = 0;&nbsp; &nbsp; &nbsp; &nbsp; for (int x = 0; x < inhabitants.length; x++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (inhabitants[x] > 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inhabitants[x] = inhabitants[x] / 2;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum += inhabitants[x];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Day " + day + " " + Arrays.toString(inhabitants));&nbsp; &nbsp; &nbsp; &nbsp; day++;&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答