我想弄清楚这一点,但双打22怎么样? 另外,for循环后分号究竟做了什么?我将假设最终结果是由此造成的。
public class termdeposit
{
int sum;
public termdeposit()
{
sum = 1;
}
public void test()
{
int sum = 1;
for (int i = 0; i <= 4; i++); {
sum = sum + 1;
}
System.out.println ("The result is: " + sum);
System.out.println("Double result: "+ sum+sum);
}
}
答案 0 :(得分:4)
分号结束(无用的)循环语句,花括号开始一个不相关的代码块。您的代码等同于:
for (int i = 0; i <= 4; i++) {
// do nothing
}
// run once:
sum = sum + 1;
您的print语句打印22
,因为sum+sum
在前一个+
的上下文中被解释为字符串连接,并且sum
现在是2
,它会打印"2"
和"2"
。
答案 1 :(得分:0)
我假设你被要求解释程序行为。这是一个棘手的问题。你似乎意识到,分号非常重要。这段代码:
for (int i = 0; i <= 4; i++); {
sum = sum + 1;
}
具有欺骗性。适当地缩进,它将是:
for (int i = 0; i <= 4; i++)
; // do nothing
{
sum = sum + 1;
}
大括号创建一个代码块(可能已声明该块的局部变量)。在这种情况下,它具有与在任何大括号外写入sum = sum + 1;
完全相同的效果。
你应该能够从中找出其余的行为,再加上在最后一个打印语句中,+
运算符从左到右关联。