我添加了一个continue语句来结束当前的迭代,以便循环体中的其余语句不会被执行。
Unknown host: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我无法理解的是,如果我添加public class Main {
public static void main(String[] args) {
int sum = 0;
int number = 0;
while (number < 20) {
number++;
if (number == 10 || number == 11)
continue;
sum += number;
}
System.out.println(sum);
}
}
,我会收到错误的原因?
{}
错误
public class Main {
public static void main(String[] args) {
int sum = 0;
int number = 0;
while (number < 20) {
number++;
if (number == 10 || number == 11) {
continue;
sum += number;
}
}
System.out.println(sum);
}
}
答案 0 :(得分:2)
这会奏效。
if (number == 10 || number == 11) {
continue;
}
sum += number;
<强>解释强>
如果您未在{}
语句中添加if
,则只会考虑下一行。因此,您需要将sum += number
保留在<{1}}
答案 1 :(得分:1)
因为continue语句在你的分支中是最终的(在{}之间),所以下一个语句(sum + = number)将永远不会执行。你的IDE必须警告你,这就是为什么它没有编译它而你得到了错误。
答案 2 :(得分:1)
在你的第一个区块中,没有{
的人有效地写了:
if (number == 10 || number == 11) {
continue;
}
sum += number;
只要表达式为sum += number
,就可以访问false
。
在第二篇文章中,您实际上写道:
if (number == 10 || number == 11) {
continue;
sum += number;
}
sum += number
;已无法访问,因为如果表达式为true
,则由于continue
将始终跳过该表达式,如果表达式为false
,则不会执行该表达式,因为它不在块语句中
答案 3 :(得分:1)
正如其他答案所说的那样,只有第一行代码才能在if语句之后运行。但是,另一个规则是,在&#34; continue&#34;之后,您无法再添加任何代码行。 if语句中的语句。所以,这确实是错误。如果你要调整代码来切换&#34; sum + = number;&#34;继续,您不会收到相同的错误。希望这会有所帮助。
答案 4 :(得分:0)
您在if块的大括号(sum += number;
)中执行{}
:
if (number == 10 || number == 11) {
continue;
sum += number;
}
这将起作用:
if (number == 10 || number == 11) {
continue;
}
sum += number;