如何在此代码中获取数组中的最高和最低值?

时间:2013-10-09 13:58:43

标签: java arrays

我需要帮助才能获得数组中的最高和最低值。我看到有些人使用Math.maxMath.min,但您如何应用它?在这段代码中?

import java.util.Scanner;
public class CaseStudy2A {
    public static void main(String[] args) {
        Scanner inp = new Scanner (System.in);
        int inpNum;
        System.out.print("Enter Number: ");
        inpNum = inp.nextInt();

        int num[]=new int [inpNum];

        int y=0;
        int accu;

            for(int x=0;x<inpNum;x++) {
                y=y+1;

                System.out.print("\nNumber [" + y + "] : ");
                accu = inp.nextInt();

                num[x]=accu;
            }
        for(int x=0;x<inpNum;x++)
        System.out.print(num[x] + " ");
    }
}

3 个答案:

答案 0 :(得分:4)

如果性能无关紧要,您可以从数组中创建一个集合并使用collection max和min。

如果你想用Math。*来解决你的作业,你可以使用这个片段:

int max= Integer.MIN_VALUE;
int min= Integer.MAX_VALUE;
for(int x=0;x<inpNum;x++){
 max = Math.max(max,x);
 min = Math.min(min,x);

答案 1 :(得分:1)

我觉得这是家庭作业......但有几种方法可以做到这一点。您可以遍历数组中的每个元素,将您点击的第一个元素存储到变量中,然后在每个元素之后检查每个元素以查看它是否大于当前存储的元素。如果是,则用该覆盖变量覆盖并继续。最后你将拥有最大的一个。

另一种方法是对数组进行排序,然后获取其中的第一个和最后一个元素,为您提供最大和最小的元素。

答案 2 :(得分:0)

[试图编辑我的帖子,所以我决定自己改进]

介绍

int min=0, max=0;

然后,在第一个“for”循环之后,当所有数组值都已知时,请执行以下操作:

min=max=num[0];
for(int x=1; x<inpNum; x++) {
  if(num[x]<min) {
    min=num[x];
  }
  else if(num[x]>max) {
    max=num[x];
  }
}

这比调用Math.min / max更快。实际上,这是计算 最小值和最大值的最快方法,因为几乎总是你最终得到的比较少于2n(其中n是数组长度),因为当你找到一个新的最小值时,你就不会检查新的最大值。这就是为什么不使用三元(?:)比较的原因。 (您还必须检查inpNum是否为正。)