我正在尝试计算 array
中所有 integers
被 2 整除的次数,只考虑一个 integer
每一步。
例如,最初如果我有 array
:[2,4,2]
和 count = 0
Step 1
[1,4,2] , count=1
Step 2
[1,2,2] , count=2
Step 3
[1,1,2] , count=3
Step 4
[1,1,1] , count=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);
}
Output
1
2
1
Count:3
上面给出的代码中的问题是数组
只被扫描了一次,我想扫描数组直到所有的整数都不能被2整除
最佳答案
请注意,您有两个问题:
- 您最多将数组的每个元素除以 2。
- 您将数组的元素除以 2 而没有首先检查它们是否可以被 2 整除。
你需要一个内部循环来划分每个数组元素,只要它能被 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);
}
关于java - 数组中所有数字都被 2 整除的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386955/