2013-11-09 129 views
0

我正在構建一個java GUI,要求用戶鍵入他的用戶ID,如果我在我的文本文件列表中找到匹配項,那麼我將他的信息顯示到GUI面板。如果他的身份證沒有找到,那麼我會顯示提示,要求他再次輸入他的身份證。java GUI:while循環和if/else語句

我現在正在使用的程序是,每次輸入錯誤的ID後,即使輸入的下一個ID是正確的,我也無法在屏幕上顯示正確的信息。我的GUI永遠停留在那個「錯誤的ID」狀態。我花了幾個小時試圖找出哪裏出了問題,但我找不到它。任何幫助,將不勝感激!

The GUI screenshot

private class okButtonListener implements ActionListener{ 
     public void actionPerformed(ActionEvent e){ 
      FileReader fr = null; 
      try{ 
       fr = new FileReader("charList.txt"); 
      } 
      catch (FileNotFoundException e1){ 
       e1.printStackTrace(); 
      } 
      BufferedReader bf = new BufferedReader(fr); 

      userID = Integer.parseInt(idField.getText()); 

      while(line != null){ 
       try{ 
        line = bf.readLine(); 
       } 
       catch (IOException e1){ 
        e1.printStackTrace(); 
       } 
       if (line != null){ 
        fields = line.split("\t"); 
        if (userID == Integer.parseInt(fields[0])){ 
         System.out.println(fields[2]); 
         displayFieldsSelections(); 
         resetFields(); 
         break; 
        } 
       } 
      } 

      if (userID != Integer.parseInt(fields[0])){ 
       mistakeResetFields(); 
      } 
     } 
    } 
+0

mistakeResetFields方法做什麼? –

+0

首先嚐試跟蹤代碼或將一些System.err.println()查看代碼可能卡住的位置。 – PeterMmm

+0

爲什麼'line'沒有在本地聲明? – PeterMmm

回答

1

我認爲這個問題是你是不是宣告line本地。在方法開始時嘗試聲明line

+0

如果你可以解釋爲什麼這會導致OP出現問題,我認爲這將會幫助他們理解問題,因爲我花了半個小時試圖找出問題以及你的答案與其相關的問題;) – MadProgrammer

+0

謝謝你們兩位! @MadProgrammer – user2350622