数组中所有数字都可以被2整除的次数

时间:2017-09-24 05:36:29

标签: java arrays algorithm

考虑到每个步骤中只有一个integers,我试图计算arrayinteger的所有array可被2整除的次数。 例如,最初如果我有[2,4,2]count = 0[1,4,2] , count=1

  

第1步

[1,2,2] , count=2
  

第2步

[1,1,2] , count=3
  

第3步

[1,1,1] , count=4
  

第4步

public static void main(String[] args) {
     int[] ar={2,4,2};
     int[] p=new int[ar.length];
     int count=0;
     for (int i=0;i<ar.length ;i++ ) {
        if(ar[i]>=1){
            ar[i]=ar[i]/2;
            count++;
        }
     }
     for (int x:ar) {
        System.out.println(x);
     }
     System.out.println("Count:"+count);

}

我对此问题的处理方法如下:

代码

1
2
1
Count:3
  

输出

array

上面给出的代码中的问题是integers are no more divisible by 2只被扫描一次,我想扫描数组,直到所有UIImage

2 个答案:

答案 0 :(得分:1)

请注意,您有两个问题:

  1. 您最多只能将数组的每个元素划分为2次。
  2. 您将数组的元素除以2而不先检查它们是否可被2整除。
  3. 你需要一个内部循环来划分每个数组元素,只要它可以被2整除:

    public static void main(String[] args) {
         int[] ar={2,4,2};
         int[] p=new int[ar.length];
         int count=0;
         for (int i=0;i<ar.length ;i++ ) {
            while (ar[i] % 2 == 0 && ar[i] > 0) { // keep dividing ar[i] by 2 as long as 
                                                  // it is divisible by 2
                ar[i]=ar[i]/2;
                count++;
            }
         }
         for (int x:ar) {
            System.out.println(x);
         }
         System.out.println("Count:"+count);
    }
    

答案 1 :(得分:1)

     for (int i=0;i<ar.length ;i++ ) {
        while(ar[i]%2==0 && ar[i]>1){
            ar[i]=ar[i]/2;
            count++;
        }
     }

这就足够了。