2013-11-09 34 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