如何计算数组中偶数的百分比?

时间:2016-02-10 08:17:21

标签: java arrays

我是初学者,这是我正在努力的方法。

编写一个名为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但是对于所有偶数元素数组或所有奇数数组都可以正常工作吗?我看不出问题在哪里? 提前谢谢。

4 个答案:

答案 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中已经完成了这个。