Java - 在数组中查找偶数和它们的百分比

时间:2013-11-21 21:45:19

标签: java

这是我需要弄清楚的问题:

编写一个名为percentEven的方法,该方法接受一个整数数组作为参数,并将数组中偶数的百分比作为实数返回。例如,如果数组存储元素[6,2,9,11,3],那么您的方法应返回40.0。如果数组不包含偶数元素或根本没有元素,则返回0.0。

这是我到目前为止所做的:

import java.util.*;

public class Change {
    public static void main(String[] args) {


    Scanner console = new Scanner(System.in);

    System.out.println("Let's find the range.");
    System.out.println("Enter five numbers to find the range.");

    int num = console.nextInt();
    int[] list = new int[num];

    System.out.println("The numbers you entered are: " + list.length); 
    System.out.println();

    percentEven(list);

    }

    public static void percentEven(int[] num){

        int percent = 0;
        int even = 0;

        for(int i = 0; i < num.length; i++){
            if(num[i] % 2 == 0){
            even++;
            }

        }  

      percent = (even / num.length) *100;

        System.out.println("The percent of even numbers is: " + percent);      
    }


}

当我运行它时,我得到100%的百分比。

5 个答案:

答案 0 :(得分:5)

这里有两个问题:

将其中一个投射到双人或浮动。

percent = (even / (double) num.length) *100;

另一个问题是你永远不会为数字赋值任何值,因此它们都是0. 0 % 2等于0,因此根据定义,列表是100%偶数。


nums == {}时,您还应该在方法中有一个基本案例,它将作为赋值状态返回0.0。

答案 1 :(得分:2)

您的代码中存在三个主要问题:

  1. 您只阅读一个整数,而不是五个
  2. 您使用此单个整数来定义数组的LENGTH,而不是内容(因此您不会将整数放入数组中。因此数组只包含零,这意味着它们都是偶数。
  3. 你正在做错误的整数运算(正如Obicere在他的回答中所述)。但是这没有任何影响,因为数组的所有元素都是偶数,所以在任何情况下结果都是100。

答案 2 :(得分:1)

你快到了。但是你正在以错误的方式初始化和存储数组。这样做

int num = console.nextInt();
int[] list = new int[num];
System.out.println("Enter " + num + " numbers");
for(int i = 0; i < num; i++) {
    list[i] = console.nextInt();
}
System.out.println("The numbers you entered are: " + java.util.Arrays.toString(list)); 
System.out.println();

并且也像其他建议一样。

答案 3 :(得分:0)

percent = even * 100 / num.length;

更改操作的顺序将使整数除法业务对您有利 - 您将获得一个向下舍入到下一个最低百分比的值,而不是向下舍入为零。

通过从键盘读取数字来解决所有数字为零的问题,如tintinmj的答案。

答案 4 :(得分:0)

import java.util.*;
public class percentEvenClass
{
  public static void main(String[] args){
    int[] list = {6, 2, 9, 11, 3};
    int percentEven_Result = percentEven(list);
    System.out.println(percentEven_Result);
  }
  public static int percentEven(int[] list){

    int count = 0;
    int percent = 0;
    for (int i=0; i<list.length; i++){

        if (list[i] % 2 == 0){
            count++;
        }
        percent = (count * 100)/ list.length;

 }
  return percent;  

}

}