我正在编写一个程序来从用户那里获取三个数字并将其放入数组列表中并找到总和,平均值,最小值和最大值。我有找到分钟的问题。当我运行代码时,Min始终为零。我该如何解决这个问题?
int num = 0;
int sum = 0;
int avg = 0;
int min = 0;
int max = 0;
int i = 0;
ArrayList<Integer> array = new ArrayList<Integer> ();
Scanner input = new Scanner (System.in);
for (i = 0; i < 3; ++i){
System.out.println("Enter a number");
num = input.nextInt();
array.add(num);
sum += num;
if(num > max){
max = num;
}
if(num < min){
min = num;
}
}
avg = sum / i;
System.out.println("Sum: " + sum);
System.out.println("Avg: " + avg);
System.out.println("Max: " + max);
System.out.println("Min: " + min);
//Code Result
//Enter a number
// 10
//Enter a number
// 20
//Enter a number
// 30
//Sum: 60
//Avg: 20
//Max: 30
//Min: 0 <-- this is always zero
}
答案 0 :(得分:2)
早上好,肖恩。
你必须初始化&#39; min&#39;循环外的价值,你必须初始化&#39; min&#39;大价值,如&#39; Integer.MAX_VALUE&#39;。
无论如何,我会告诉你如何在没有循环的情况下找到一些元素:
要获取ArrayList的最大值,您不需要for。您可以使用Collections API
来查找它。
Collections.max(arrayList);
它返回ArrayList中all的最大值。
要获取最小值,您在Collections API中也有一个函数来查找它。
Collections.min(arrayList);
也会奏效。
Sum和Avg你必须用循环计算,它在你的程序中没问题。
您的代码必须是这样的
int num = 0;
int sum = 0;
int avg = 0;
int min = 0;
int max = 0;
int i = 0;
ArrayList<Integer> array = new ArrayList<Integer> ();
Scanner input = new Scanner (System.in);
for (i = 0; i < 3; ++i){
System.out.println("Enter a number");
num = input.nextInt();
array.add(num);
sum += num;
}
max = Collections.max(array);
min = Collections.min(array);
avg = sum / i;
System.out.println("Sum: " + sum);
System.out.println("Avg: " + avg);
System.out.println("Max: " + max);
System.out.println("Min: " + min);
PD:您必须导入java.util.Collections;
祝你有个美好的一天!
答案 1 :(得分:1)
那是因为您将min
设置为0
且低于所有值。
你需要将它初始化为一个大数字(比如说Integer.MAX_VALUE
),然后就可以了