我正在尝试从数组中的用户输入获取总和,平均值,最大值和最小值。总和,平均值和最大值给出正确的输出。但是最小值无法发挥作用。我在哪里做错了,请有人帮我找出来。并且请不要为这个基本问题而烦恼。
import java.util.Scanner;
public class minMaxSumAverage {
public static void main(String args[]) {
int n, sum = 0, max, min;
double average = 0;
Scanner s = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = s.nextInt();
int a[] = new int[n];
max = a[0];
min = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
}
输出:
Enter elements you want to input in array:
5
Enter all the elements:
25
5
10
6
4
Sum is: 50
Average is: 10.0
Max is: 25
Min is: 0
最小值应为4。
答案 0 :(得分:1)
在 Java-8 中,您可以使用流单行完成此操作:
int[] a = new int[] { 20,11,2,3,4,7,8,90 };
int min = Arrays.stream(a).min().getAsInt();
要获取最大元素,只需将.min()
替换为.max()
求和:Arrays.stream(a).mapToInt(Integer::intValue).sum();
答案 1 :(得分:1)
我已经更新了您的代码。请检查以下代码以从所有元素列表中获取最小值。
输入:
在数组中输入要输入的元素:
5
输入所有元素:
25
5
10
6
4
输出:
总和是:50
平均为:10.0
最大为:25
最小值是:4
Scanner scan = null;
try {
int n, sum = 0, max, min;
double average = 0;
scan = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = scan.nextInt();
int a[] = new int[n];
max = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = scan.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
/**
// from here remove logic for get min value.
if (a[i] < min) {
min = a[i];
}
**/
}
min = a[0];
for(int i=0;i<a.length;i++){
if(a[i] < min){
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
catch (Exception ex) {
ex.printStackTrace();
}finally{
scan.close();
}
答案 2 :(得分:0)
因为min初始化为0。 在循环中,您只需询问您当前的数字是否小于0。
再试一次,将数组的第一个值指定为min。
然后它应该工作。
答案 3 :(得分:0)
int a[] = new int[n];
max = a[0];
min = a[0];
您已创建一个空数组a
。 max和min都被初始化为0。这对于max来说很好用,但是可以为您带来min的结果,因为在您创建的数组中,没有什么比零小。
要解决此问题,请在数组中填充值(例如
)后,将min = a[0];
行添加到for循环中
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
min = a[0];
//if-statements here
然后,min = a[0]
将不再为零,而是已填充数组的第一个值。
答案 4 :(得分:0)
作为替代方案,您可能需要考虑使用Stream ...
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Enter count elements you want to input in array: ");
int n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
}
s.close();
IntSummaryStatistics iss = Arrays.stream(a).summaryStatistics();
System.out.println("Sum is: " + iss.getSum());
System.out.println("Average is: " + iss.getSum()/iss.getCount());
System.out.println("Max is: " + iss.getMax());
System.out.println("Min is: " + iss.getMin());
}
答案 5 :(得分:0)
有关最小,最大,总和,平均功能,请参考以下代码:
List<Integer> intList= Arrays.asList(70, 80, 10, 20, 40, 50);
Integer ans=0;
int sum1= intList.stream().reduce(ans, (x,y) -> x+y);
System.out.println(sum1);
int sum2= intList.stream().reduce(ans, Integer::sum);
System.out.println(sum2);
int max= intList.stream().max(Integer::compare).get();
System.out.println(max);
int min= intList.stream().min(Integer::compare).get();
System.out.println(min);
Double avg= intList.stream().collect(Collectors.averagingInt(x-> x));
System.out.println(avg);