找到最大数量?

时间:2014-01-08 18:03:58

标签: java loops

好的,所以当我输入一个1, 2, 100, 3, 9, 22, 58数组时,我无法弄清楚为什么 以下代码返回100
(这只是一个片段,这是更大代码块的一部分)

double result = numbers[0];
for (int i = 0; i < numbers.length; i++)
    if (numbers[i] > result)
        result = numbers[i];
System.out.println("The max value is " + result);

但如果没有if上的花括号,它会打印一个从第一个开始的最大数字列表,在这种情况下:1 2 100

double result = numbers[0];
for (int i = 0; i < numbers.length; i++)
    if (numbers[i] > result) {
        result = numbers[i];
        System.out.println("The max value is " + result);
    }

先谢谢你的帮助,这让我发疯,这可能是非常愚蠢的。

8 个答案:

答案 0 :(得分:4)

在第二个示例中,您将在if语句中进行打印,因此每次遍历列表时,都会打印出结果。在第一个示例中,它在if之后执行,因为您不使用大括号。当你没有{}括号语句后,它假设只有下一行包含在该语句中。

在继续编码之前,您应该学习良好的编码实践。当您的代码更加复杂时,它将帮助您避免以后的事情。此外,单步执行代码将向您显示正在发生的事情,因此您还应该学习如何使用调试器。

答案 1 :(得分:2)

in

if (numbers[i] > result)
        result = numbers[i];
System.out.println("The max value is " + result);

没有括号的if块仅包含紧邻的下一行。

for块相同。

解释。

for没有大括号,所以它只会迭代下一个代码块,即if块。

if块也没有大括号,因此它将遍历紧接着的下一个块/语句

result = numbers[i];

如此有效地使你的System.out.println("The max value is " + result);语句超出了第一种情况下的两个块,因此只执行一次。

答案 2 :(得分:0)

在第一种情况下,如果该数字大于先前的number[i]值,则结果将设置为当前数字(result)。这具有将结果更新为到目前为止找到的最大值的效果,只要它大于设置为(numbers[0])的第一个值。如果在循环结束时打印它,则打印数组中找到的最大数字(最大值)。在第二种情况下,当您浏览numbers数组时,始终打印到目前为止在数组中找到的最大数字 - 因此您将按升序打印数字。

答案 3 :(得分:0)

在第一个示例中,System.out.println仅在块结束时执行一次。在第二个例子中,每次遇到新的最高数字时都会执行它。

在两个示例中添加大括号应该可以明确区别:

for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] > result) {
        result = numbers[i];
    }
}
System.out.println("The max value is " + result); // only ever called once

VS

for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] > result) {
        result = numbers[i];
        System.out.println("The max value is " + result); // called whenever numbers[i] > result
    }
}

答案 4 :(得分:0)

每当您发现数字大于结果时,您将其与结果交换并打印出来。

System.out.println(“最大值为”+结果);

应该在for循环之后(在花括号之外),所以当循环结束时,只打印出最大的数字。

答案 5 :(得分:0)

double result = numbers[0];
for (int i = 0; i < numbers.length; i++)
{
    if (numbers[i] > result) //this will check each array members to find the max
{
        result = numbers[i];//assign the array member if it is the largest
}
System.out.println("The max value is " + result); //print the max value of the array

答案 6 :(得分:0)

阅读java及其控制流语句。

if-和for-statements都有一个子句 - 这是受控制的代码。它可以是单个语句,也可以是用大括号括起来的一组语句。

阅读本文: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html

答案 7 :(得分:0)

我将根据BobbyD17的建议,检查如何使用调试器逐步执行代码。

对于eclipse,请参阅此link

netbeans