在处理if / else if时,似乎这个错误在某些计算机上发生了很多,因为有时候我实际上完全没有问题(没有实现Thread t = new Thread(this);,哈哈... ),有时Eclipse会发出错误消息:“令牌上的语法错误”否则“,{预期。”
以下是片段:
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语句起作用?因为任何形式的尝试添加其他只会抛出错误。
答案 0 :(得分: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();
}
}
}
在if。
后面需要{
而不是;
答案 1 :(得分:2)
由于您错误地将;
放在if
语句而不是{
之后,因此无意中过早关闭了keyTyped方法。因此,else
与任何if
语句(Java中不允许)断开连接,并且您的keyCode
变量超出范围。
在您的if
语句后,将;
替换为{
。看起来你最后还有一个迷路}
。在下面的代码中,我还从*
条件中删除了无关的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)中,如果将(键入)光标放在(
,)
,[
,]
上, {
或}
,然后编辑器会在其配偶周围突出显示或绘制一个矩形。
答案 2 :(得分:1)
帽子,因为你在关闭之前关闭了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();
}
}
答案 3 :(得分:1)
你似乎没有开场{。如果你有的话;哪个应该没问题,但它不会期望闭括号。
答案 4 :(得分:1)
如果你有4个开口大括号{,你也应该有4个结束大括号}
因此,当您键入代码时,只需将{}立即打开和关闭括号,然后退回到此块内并继续在其中键入。这样你就永远不会失去牙箍。