2013-09-26 99 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名關者}

所以,當你鍵入代碼,只需把{}既開,並立即關閉括號,那麼這個塊內退後一步並繼續在那裏打字。這樣你永遠不會失去大括號。