2013-11-20 70 views
-2

用戶輸入一個ID,如果它存在,它應顯示它已經存在,並再次循環回inout部分。但由於某種原因,它沒有這樣做。在它的結尾,我有代碼寫入一個文件,甚至執行tho我有一個條件在那裏,因爲它不。我嘗試了幾件事,不知道爲什麼它不會工作。循環和條件不起作用

JTextField aaField = new JTextField(5); 
JTextField bbField = new JTextField(10); 
JTextField ccField = new JTextField(10); 
JTextField ddField = new JTextField(10); 
JTextField eeField = new JTextField(5); 
JTextField ffField = new JTextField(5); 
boolean done = false; 
while(done == false) { 
    JPanel myPanel1 = new JPanel(); 
    myPanel1.add(new JLabel("ID:")); 
    myPanel1.add(aaField); 
    myPanel1.add(Box.createVerticalStrut(5)); 
    myPanel1.add(new JLabel("Name:")); 
    myPanel1.add(bbField); 
    myPanel1.add(Box.createHorizontalStrut(5)); 
    myPanel1.add(new JLabel("Address:")); 
    myPanel1.add(ccField); // a spacer 
    myPanel1.add(Box.createHorizontalStrut(10)); 
    myPanel1.add(new JLabel("Email:")); 
    myPanel1.add(ddField); 
    myPanel1.add(Box.createVerticalStrut(10)); 
    myPanel1.add(new JLabel("Password:")); 
    myPanel1.add(eeField); // a spacer 
    myPanel1.add(Box.createVerticalStrut(10)); 
    myPanel1.add(new JLabel("dob:")); 
    myPanel1.add(ffField); // a spacer 
    result1 = JOptionPane.showConfirmDialog(null, myPanel1, 
       "Please Enter Values", JOptionPane.OK_CANCEL_OPTION); 

    for(int xx = 0; xx< course.size();xx++) { 
     ch = course.get(xx).getId();  
     if(aaField.getText().matches(ch)) { 
      JOptionPane.showMessageDialog(null,"Please enter an ID that doesnt already exist."); 
     } 
     if(!(aaField.getText().matches(ch))) { 
      done = true; 
     } 
    } 
} 
if(done == true && !(aaField.getText().matches(ch))&& result1 ==JOptionPane.OK_OPTION) { 
    Mate a = new Mate(); 
    a.addMate(aaField.getText(),bbField.getText(),ccField.getText(),ddField.getText(),eeField.getText(),ffField.getText()); 
} 
+3

請格式化您的代碼。 –

+1

哇,這是一個格式不正確的代碼塊。我注意到最後你有if(done = true && ...這是任務,你可能想比較if(done == true && ... – Taylor

+0

格式化你的代碼請... –

回答

1

「......我有一個條件,在那裏它不是。它看起來像你,但你基本上沒有。

for(int xx = 0; xx< course.size();xx++) { 
    ch = course.get(xx).getId();  
    if(aaField.getText().matches(ch)) { 
     JOptionPane.showMessageDialog(null,"Please enter an ID that doesnt already exist."); 
    } 
    if(!(aaField.getText().matches(ch))) { 
     done = true; 
    } 
} 

我認爲course某種名單的你在哪裏獲取某種從現有的值。如果你檢查這個代碼,你會發現done總是如此,如果有任何值當然不匹配

我想你想要的東西基本上是這個有點反轉結構:

boolean done = true; 
do { 

    // your giant block 

    for (int i = 0; i < course.size(); i++) { 
     if (aaField.getText().matches(course.get(i).getId())) { 
      JOptionPane.showMessageDialog(null, "Entry cannot be a duplicate."); 
      done = false; 
      break; 
     } 
    } 

} while (!done); 

作爲一個側面說明,你的代碼是凌亂。如果你是一名初學者,這很好,但你需要努力。對於初學者來說,不要在循環中創建GUI組件。

而且你正在使用的方法matches,我懷疑你有regular expressions列表,所以你可能想使用該方法equals代替:

if (aaField.getText().equals(ch)) { 

除非你確實有什麼正則表達式的列表在這種情況下,我認爲是正確的。