2013-09-26 86 views
3

似乎这个错误发生在某些计算机上时处理if/else如果,因为有时我会绝对没有执行此问题(不实现线程t =新线程(this),;哈哈......) ,有时Eclipse会发出错误消息:“令牌上的语法错误”else“,{expected。”我遇到了一个我用“else if”语句获得的错误的问题。

这里的片段:

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 can not解决为变量
- 令牌“else”的语法错误,删除此令牌

将抛出“private int keyCode;”在最上面修复它,还是只是在后来导致一些问题,使它成为一个函数而不是一个变量或什么?

,我应该把它作为

{ if(keyCode etc.){ 
} 

还是有办法让else if语句可工作?因为任何形式的尝试添加其他只是抛出一个错误。

+0

显示完整代码 – sunysen

+1

检查括号 - 您的'else if' bloxk在'keyTyped'方法之外。 – iamnotmaynard

+0

你是否正在进入计算机科学课程的介绍并寻求作业帮助? :D – user919860

回答

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),如果定位(打字)光标上的()[]{,或},那么编辑器会在其伴侣周围突出显示或绘制一个矩形。

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(); 
} 
} 
} 

您需要的{而不是;的背后是否。

1

帽子,因为你其他事情之前,所以你需要之前“中的其他”删除右括号并添加语句“如果”部分关闭方法的keyTyped -

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(); 
} 
} 
1

你似乎不有开头{。之后如果你刚才;这应该是好的,但它不期望结束大括号。

1

如果你有4个开括号{,你也应该有4名关者}

所以,当你键入代码,只需把{}既开,并立即关闭括号,那么这个块内退后一步并继续在那里打字。这样你永远不会失去大括号。