【问题标题】:Finding out min, max, avg, sum in ArrayList找出 ArrayList 中的 min、max、avg、sum
【发布时间】:2023-03-13 23:02:02
【问题描述】:

我正在编写一个程序来从用户那里获取三个数字并将其放入一个数组列表中并找到总和、平均值、最小值和最大值。我在找到最小值时遇到问题。当我运行代码时,最小值始终为零。我该如何解决这个问题?

    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

 }

【问题讨论】:

  • 而不是int min = 0; 使用int min = Integer.MAX_VALUE;
  • 在你here之前几分钟就有一个类似的问题。
  • (练习的重点可能完全是另一回事 - 想想 Stream。)(Blackbelt 的评论类似地适用于max。)

标签: java android


【解决方案1】:

早安,肖恩。

您必须在循环外初始化“min”值,并且必须将“min”初始化为较大的值,例如“Integer.MAX_VALUE”。

不管怎样,我会告诉你如何在没有循环的情况下找到一些元素:

要获得 ArrayList 的最大值,您不需要 for。您可以使用Collections API 找到它。

Collections.max(arrayList);

它会返回 ArrayList 中所有的最大值。

要获取最小值,您在 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;

祝你有美好的一天!

【讨论】:

  • (PD?) You must import java.util.Collections; - 或者用java.util.限定Collections
【解决方案2】:

那是因为您将 min 设置为 0 并且它低于所有值。 你需要将它初始化为一个很大的数字(比如Integer.MAX_VALUE)然后它才能工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2013-01-05
    • 2015-09-03
    • 2020-08-19
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多