gpt4 book ai didi

java - 查找数组的最小和最大数

转载 作者:行者123 更新时间:2023-12-02 03:41:50 34 4
gpt4 key购买 nike

当我运行这个程序时,它找到最大数字,但始终打印 0.0 作为最小值。

当我使用 Double.POSITIVE_INFINITY 和 Double.NEGATIVE_INFINITY 而不是将最小和最大设置为 x[0] 时,它可以正常工作。

使用 Math.min 和 Math.max 也会给我带来同样的错误,但也适用于 Double.POSITIVE_INFINITY 和 Double.NEGATIVE_INFINITY 。我查看了其他几个类似的问题,但我不允许使用 Array.sort 或人们发布的任何其他建议。

我只是想知道为什么将两个变量设置为 x[0] 只能找到最大的数字,无论我先声明该变量,第二个还是将其设置为相等(双最大,最小 = x[0])。

public class MaxAndMin {
public static void main (String[] args) {
Scanner s= new Scanner(System.in);
System.out.println("How many numbers would you like to enter?");
int n= s.nextInt();

double[] x= new double[n];
double smallest= x[0]; //double smallest= Double.POSITIVE_INFINITY;
double largest= x[0]; //double largest= Double.NEGATIVE_INFINITY;

for (int i=0; i<x.length; i++) {
x[i]= kbd.nextDouble();

if (x[i] > largest) {
largest = x[i];

} else if (x[i] < smallest) {
smallest = x[i];
}
}
System.out.println("Smallest number: " + smallest + " Largest number: " + largest);
}
}

最佳答案

当你初始化smallestlargest时,你没有在x中放入任何值,所以它的元素只是默认值该数组是用零创建的。

因此,如果 1 小于零,您只会找到较小的 smallest 值(如果 1 大于零,您只会找到较大的 largest 值)。

您应该使用 POSITIVE_INFINITYNEGATIVE_INFINITY 来初始化这些值,因为所有值都分别小于和大于这些值。

<小时/>

或者,您可以在 i == 0 时在 for 循环中初始化 smallest =largest = x[0]。但是,前一种方法更可取,因为它不需要在每次迭代时检查 i == 0

<小时/>

或者,您可以将第一个赋值移出循环:

x[0] = smallest = largest = kbd.nextDouble();
for (int i = 1; i<x.length; i++) {
x[i] = kbd.nextDouble();
...

这可以避免重复检查i == 0,但您必须重复kbd.nextDouble()。我仍然会使用第一种方法。

关于java - 查找数组的最小和最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756808/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com