3

在处理 if/else if 时,似乎这个错误在某些计算机上发生了很多,因为有时我在实现这个时绝对没有问题(不实现 Thread t = new Thread(this);,哈哈......),并且有时 Eclipse 会发出错误消息:“令牌“else”上的语法错误,{ 预期。”

这是片段:

public void keyTyped(KeyEvent e) {
    int keyCode = e.getKeyCode();
    char keyLetter = e.getKeyChar();
    if(Character.*isLetterOrDigit*(keyLetter));

}
else if(keyCode == KeyEvent.VK_ENTER){
    dis.setWaitingforInputfalse();
}
}
}

如果我真的在那个荒谬的地方像它想要的那样放入花括号,
例如:

else{ if(keyCode etc.etc.etc){
}

然后它抛出错误:

此行有多个标记
- 无法将 keyCode 解析为变量
- 标记“else”上的语法错误,删除此标记

将折腾“private int keyCode;” 在顶部修复它,或者这只会在以后导致一些问题,使其成为函数而不是变量或其他东西?

我应该把它保留为

{ if(keyCode etc.){
}

或者有没有办法让 else if 语句起作用?因为任何形式的尝试添加 else 只会抛出错误。

4

5 回答 5

5

您的代码中有一些问题:

public void keyTyped(KeyEvent e) {
    int keyCode = e.getKeyCode();
    char keyLetter = e.getKeyChar();
    if(Character.*isLetterOrDigit*(keyLetter)); // The if statement ends here 
                                                // because of the ;

} // the function keyTyped ends here
else if(keyCode == KeyEvent.VK_ENTER){ // the else is not connected to the if
    dis.setWaitingforInputfalse();
}
}
}

你需要 a{ 而不是;if 后面的 a。

于 2013-09-26T22:30:48.227 回答
2

因为您错误地;在您的if语句之后而不是{,您无意中过早地关闭了 keyTyped 方法。结果, 与else任何语句断开连接if(在 Java 中是不允许的),并且您的keyCode变量超出范围。

在您的if声明之后,将 替换;{。看起来你}最后也有一个流浪者。在下面的代码中,我还从条件中删除了无关*的 's 。if

固定代码:

public void keyTyped(KeyEvent e) {
    int keyCode = e.getKeyCode();
    char keyLetter = e.getKeyChar();
    if(Character.isLetterOrDigit(keyLetter)) {
        // do something
    }
    else if(keyCode == KeyEvent.VK_ENTER){
        dis.setWaitingforInputfalse();
    }
}

提示:在大多数 IDE 和代码编辑器(包括 Eclipse)中,如果您将(键入)光标定位在()[]{}上,那么编辑器将突出显示或围绕其配对绘制一个矩形。

于 2013-09-26T22:30:14.530 回答
1

帽子,因为您在 else 之前关闭了 keyTyped 方法,因此您需要在“else”之前删除右大括号并添加“if”部分的语句 -

public void keyTyped(KeyEvent e) {
 int keyCode = e.getKeyCode();
 char keyLetter = e.getKeyChar();
 if(Character.*isLetterOrDigit*(keyLetter)){
 //do something here
 }
 else if(keyCode == KeyEvent.VK_ENTER){
   dis.setWaitingforInputfalse();
 }
}
于 2013-09-26T22:33:28.477 回答
1

您似乎没有开头的 {。之后,如果你有;这应该没问题,但它不期望右括号。

于 2013-09-26T22:33:47.127 回答
1

如果你有 4 个左大括号 {,你也应该有 4 个右大括号 }

因此,当您键入代码时,只需立即将 {} 放在左大括号和右大括号中,然后回到该块内并继续在其中输入。这样你就永远不会失去牙套。

于 2013-09-26T22:34:50.180 回答