我是初学者,这是我正在努力的方法。
编写一个名为percentEven的方法,该方法接受一个整数数组作为参数,并将数组中偶数的百分比作为实数返回。例如,如果数组存储元素{6,2,9,11,3},那么您的方法应返回40.0。如果数组不包含偶数元素或根本没有元素,则返回0.0。
这是我到目前为止所拥有的......
public static double percentEven(int[]a){
int count = 0;
double percent = 0.0;
if (a.length > 0){
for ( int i = 0; i < a.length; i++){
if ( a[i] % 2 == 0){
count++;
}
}
percent =(count/a.length)*100.0;
}
return percent;
}
当数组包含偶数和奇数元素的混合时,我继续返回0.0但是对于所有偶数元素数组或所有奇数数组都可以正常工作吗?我看不出问题在哪里? 提前谢谢。
答案 0 :(得分:8)
count/a.length
返回0
,因为您正在划分两个整数,第二个操作数大于第一个。将其更改为(double)count/a.length
以执行浮点除法。
或者,将操作顺序更改为:
percent = 100.0*count/a.length;
答案 1 :(得分:1)
@Bathsheba:好的,谢谢你的建议。
以下是示例代码:
onCreate
答案 2 :(得分:1)
对于像2 * 100.0 / 5 = 40.0这样的简单划分,上面的逻辑可以正常工作但是考虑一下我们有51 * 100.0 / 83的情况,输出的可读性会降低,并且总是建议将百分比截断为有限的十进制数字。
一个例子:
int count = 51;
Double percent = 0.0;
int length = 83;
percent = count*100.0/length;
System.out.println(percent);
输出:61.44578313253012
截断时:
Double truncatedDouble = new BigDecimal(percent ).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(truncatedDouble);
输出:61.446
答案 3 :(得分:0)
List<Integer> numbers = Arrays.asList(a);
int number = numbers.stream().filter(n->n%2==0).count();
int percent = number*100.0/numbers.size();
我在java 8中已经完成了这个。