这是我需要弄清楚的问题:
编写一个名为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%的百分比。
答案 0 :(得分:5)
这里有两个问题:
将其中一个投射到双人或浮动。
percent = (even / (double) num.length) *100;
另一个问题是你永远不会为数字赋值任何值,因此它们都是0. 0 % 2
等于0,因此根据定义,列表是100%偶数。
在nums == {}
时,您还应该在方法中有一个基本案例,它将作为赋值状态返回0.0。
答案 1 :(得分:2)
您的代码中存在三个主要问题:
答案 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;
}
}