初学者:数组中的最小值(Java)

时间:2015-10-03 02:31:46

标签: java arrays sorting min

当我执行这个程序时,它打印最大值就好了,但是最小值总是打印到零。我继续挠挠脑袋......谁能看到这里有什么问题?谢谢你的期待。

terminfo

3 个答案:

答案 0 :(得分:1)

问题在于,当声明数组时,数组中的int设置为0.将min设置为numbers[0]会将min设置为0.如果不是你的min,则代码将失败。< / p>

在这种情况下,您不需要数组 - 您可以只存储用户输入的内容。除此之外,只需检查i==0是否为numbers[0],将min和max设置为.class。 (如果你没有对max做同样的事情,那么所有底片的数组都会失败。)

答案 1 :(得分:0)

这很简单。 min变量永远不会更新,因为每次min&gt; number [i]被评估返回false。我们来看一个例子:

  1. min = 0.0&gt;数字[i] = 4.5 - &gt;假
  2. min = 0.0&gt;数字[i] = 3.8 - &gt;假
  3. min = 0.0&gt;数字[i] = -8.9 - &gt; true,min = -8.9
  4. min = -8.9&gt;数字[i] = 7.5 - &gt;假
  5. min = -8.9&lt;数字[i] = 5.6 - &gt;假
  6. min的值为: -8.9

    使用Java 8,您可以使用lambdas轻松获得最大值和最小值:

    max = Arrays.stream(numbers).max().getAsDouble();
    min = Arrays.stream(numbers).min().getAsDouble();
    

答案 2 :(得分:0)

正如其他答案所述,问题是numbers[0] 开始初始化为0,因此无论用户输入的数字如何,您的代码仍然会找到{ {1}}为最小值。

您需要的是一个额外的状态来表示“我还没有任何最小值”。您可以使用额外的0变量来表示此状态,或者如果您可以使用boolean包装类型,则可以使用Integer

例如:

null