2011-10-16 178 views
0

我來自C背景,所以我假設我的語法不正確。嵌套如果語句失敗

在下面的代碼中;

public class ButtonListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 

     String jcbValue = (String) jcbIDF.getSelectedItem(); 
     if (jcbValue.equals("Insert")) { 

      String Id = jtfId.getText(); 
      ArrayList<String> ValueList = new ArrayList<String>(); 
      String Name = jtfName.getText(); 
      String GPA = jtfGPA.getText(); 
      ValueList.add(Name); 
      ValueList.add(GPA); 
      if (map.containsKey(Id)){ 
       JOptionPane.showMessageDialog(null, "Key exists!", 
         "Result", JOptionPane.INFORMATION_MESSAGE); 
      } 
      else if (!map.containsKey(Id)){ 

       map.put(Id, ValueList); 
       System.out.println(map); 

       JOptionPane.showMessageDialog(null, "Record inserted", 
         "Result", JOptionPane.INFORMATION_MESSAGE); 
       jtfId.setText(""); 
       jtfName.setText(""); 
       jtfGPA.setText(""); 
      } 

     } //terminates insert 
     else if (jcbValue.equals("Delete")) { 
      String Id = jtfId.getText(); 
      ArrayList<String> ValueList = new ArrayList<String>(); 
      String Name = jtfName.getText(); 
      String GPA = jtfGPA.getText(); 

      if (map.containsKey(Id)){ 
      JOptionPane.showMessageDialog(null, "Key exists, deleted!", 
         "Result", JOptionPane.INFORMATION_MESSAGE); 
      } else if (!map.contasKey(Id)){  
      System.out.println(map); 
      JOptionPane.showMessageDialog(null, "Key Does not exist!", 
      }              


     } //terminates delete 
     else if (jcbValue.equals("Find")) { 
      System.out.println(map); 
      JOptionPane.showMessageDialog(null, 
        "Find Selected; But not Implemented", "Result", 
        JOptionPane.INFORMATION_MESSAGE); 
     } //terminates find 

    }// Terminates actionPerformed Class 
}// Terminates ButtonListenerClass 

我收到編譯錯誤說:「}上線X上,過早的EOF意外。如果我刪除evalute map.containsKey子國際單項體育聯合會(同上),它編譯並運行正常。我的一切在互聯網上閱讀說Java是能夠嵌套IF語句,那麼究竟什麼是我做錯了嗎?

感謝您的幫助!

CJ

回答

6

這條線?

 JOptionPane.showMessageDialog(null, "Key Does not exist!", 
     } 

您的方法調用未關閉。我想你的意思是這樣:

 JOptionPane.showMessageDialog(null, "Key Does not exist!", 
             "Result", JOptionPane.INFORMATION_MESSAGE); 
     } 
+0

感謝Brian的快速反應。你是否對它進行了抽查,並且知道問題是什麼,或者你是否使用了某種類型的調試器? – CryptoJones

+0

點檢查它。 「Unexpected}」意味着當它期待別的東西時,它得到了一個},所以我只是看看每個之前的內容,直到找到問題代碼。像Eclipse這樣的IDE應該強調這種問題。 –

1

您的問題是,在過去else if聲明:

JOptionPane.showMessageDialog(null, "Key Does not exist!", 

這條線沒有關閉。就像之前的海報說的那樣,你應該這樣做,

JOptionPane.showMessageDialog(null, "Key Does not exist!", "Result", JOptionPane.INFORMATION_MESSAGE);