我正在以经典的方式学习Java - 通过玩Karel。
但我似乎遇到了一个即使在谷歌的帮助下也无法解决的简单问题。
我在Eclipse中遇到错误,说令牌“else”上存在语法错误,我应该将其删除。
为什么? else语句上方代码块中的语法是相同的。
这是我的代码:
public void run() {
putBeeper();
if(beepersPresent()){
move();
} while(frontIsClear()){
move();
putBeeper();
} else if(facingEast()){
turnLeft();
move();
}
}
答案 0 :(得分:4)
else
声明必须在if
之后立即跟进,你之间有while
循环。
由于这被低估了,更正式的Java Language Specification
的相关部分14.9 if语句if语句允许条件执行语句或条件选择两个语句,执行一个语句 或另一个但不是两个。
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
Expression必须具有boolean或Boolean类型,否则会发生编译时错误。
答案 1 :(得分:3)
因为你想说while() { } else {
为什么呢?
(是的,我刚刚那样做了。)
答案 2 :(得分:0)
您的else
匹配while
,而不是if
。不完全清楚你在那里想做什么。
答案 3 :(得分:0)
大概:
while(frontIsClear())
应该是
else if(frontIsClear())
答案 4 :(得分:0)
你到底想做什么?
while(frontIsClear()){
move();
putBeeper();
} else if(facingEast()){
turnLeft();
move();
虽然这个..否则,如果那样?不可能。
答案 5 :(得分:0)
您将else
放在while
之后,这确实是语法错误
试试:
public void run() {
putBeeper();
if(beepersPresent()){
move();
}
while(frontIsClear()){
if (facingEast()) {
turnLeft();
}
move();
putBeeper();
}
}
答案 6 :(得分:0)
非常简单。
你是否在{和}之间持续。其他必须完全是事后。
删除附近的}并将其放在其他地方,你应该没问题。