0

我需要帮助才能获得数组中的最高值和最低值。我看到有些人使用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] + " ");
    }
}
4

3 回答 3

4

如果性能无关紧要,您可以从数组创建一个集合并使用集合最大值和最小值。

如果您想通过 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);
于 2013-10-09T14:03:22.680 回答
1

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

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

于 2013-10-09T14:02:30.300 回答
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 是否为正。)

于 2013-10-09T14:16:56.153 回答