好的,所以当我输入一个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);
}
先谢谢你的帮助,这让我发疯,这可能是非常愚蠢的。
答案 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)