2015-11-16 18 views
1

这是我开发的屏幕: a busy cat 的问题如下: 如果我进入输入错误,我得到了错误的字段的所有错误。然而,对于最后一个领域,它一直告诉我需要输入一个有效的(即使它被纠正)。它只在最后一个字段中做到这一点。有谁知道我的问题在哪里?的Java确认循环不纠正错误,最后

这是我的代码:

public void actionPerformed(ActionEvent e) { 
       try{ 
        //Check if the field of the enterprise name is empty, if it is empty, generate an error message 
        if(enterpriseGeneral.getEnterpriseName().getText().length() != 0){ 
         this.entName = enterpriseGeneral.getEnterpriseName().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 1; 
        } 

        //Check if the field of the first name (admin) is empty, if it is empty, generate an error message 
        if(userDetail.getFirstName().getText().length() != 0){ 
         this.firstName = userDetail.getFirstName().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 2; 
        } 

        //Check if the field of the last name (admin) is empty, if it is empty, generate an error message 
        if(userDetail.getLastName().getText().length() != 0){ 
         this.lastName = userDetail.getLastName().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 3; 
        } 

        //This if-loop checks if the input of the field 'phone number' is a valid phone number (admin), if it's not, it generates an error message 
        Pattern pattern = Pattern.compile("[0][0-9]{8,12}"); 
        Matcher mat2 = pattern.matcher(userDetail.getPhoneNumber().getText()); 
        if(mat2.matches()){ 
        phoneNumber = Integer.parseInt(userDetail.getPhoneNumber().getText()); 
        } else{ 
         correct = false; 
         ErrorMessage = 4; 
        } 

        //This if-loop checks if the input of the field 'e-mail' is a e-mail address (admin), if it's not, it generates an error message 
        Pattern pattern2 = Pattern.compile("[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"); 
        Matcher mat = pattern2.matcher(userDetail.getEmail().getText()); 
        if(mat.matches()){ 
         this.email = userDetail.getEmail().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 5; 
        } 

        //Check if the field of the enterprise street name is empty, if it is empty, generate an error message 
        if(enterpriseAdres.getStreet().getText().length() != 0){ 
         this.entStreet = enterpriseAdres.getStreet().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 6; 
        } 

        //Checks if the street number of the enterprise address is an actual number. 
        Pattern pattern3 = Pattern.compile("[0-9]+"); 
        Matcher mat3 = pattern3.matcher(enterpriseAdres.getStreetNumber().getText()); 
        if(mat3.matches()){ 
        entStreetNumber = Integer.parseInt(enterpriseAdres.getStreetNumber().getText()); 
        } else{ 
         correct = false; 
         ErrorMessage = 7; 
        } 

        this.entBus = enterpriseAdres.getBus().getText(); 

        //Check if the field of the enterprise ZIPcode is empty, if it is empty, generate an error message 
        if(enterpriseAdres.getZipCode().getText().length() != 0){ 
        this.entZip = enterpriseAdres.getZipCode().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 8; 
        } 

        //Check if the field of the enterprise city is empty, if it is empty, generate an error message 
        if(enterpriseAdres.getCityName().getText().length() != 0){ 
        this.entCity = enterpriseAdres.getCityName().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 9; 
        } 

        //Check if the field of the enterprise country name is empty, if it is empty, generate an error message 
        if(enterpriseAdres.getCountry().getText().length() != 0){ 
        this.entCountry = enterpriseAdres.getCountry().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 10; 
        } 

        //Check if the field of the admin street name is empty, if it is empty, generate an error message 
        if(userAdres.getStreet().getText().length() != 0){ 
         this.userStreet = userAdres.getStreet().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 11; 
        } 

        //Checks if the street number of the admin address is an actual number. 
        Pattern pattern4 = Pattern.compile("[0-9]+"); 
        Matcher mat4 = pattern4.matcher(userAdres.getStreetNumber().getText()); 
        if(mat4.matches()){ 
        userStreetNumber = Integer.parseInt(userAdres.getStreetNumber().getText()); 
        } else{ 
         correct = false; 
         ErrorMessage = 12; 
        } 

        this.userBus = userAdres.getBus().getText(); 

        //Check if the field of the admin ZIPcode is empty, if it is empty, generate an error message 
        if(userAdres.getZipCode().getText().length() != 0){ 
        this.userZip = userAdres.getZipCode().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 13; 
        } 

        //Check if the field of the enterprise name is empty, if it is empty, generate an error message 
        if(userAdres.getCityName().getText().length() != 0){ 
        this.userCity = userAdres.getCityName().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 14; 
        } 

        //Check if the field of the admin country name is empty, if it is empty, generate an error message 
        if(userAdres.getCountry().getText().length() != 0){ 
        this.userCountry = userAdres.getCountry().getText(); 
        } else{ 
         correct = false; 
         ErrorMessage = 15; 
        } 

       } catch (NumberFormatException e2) { 
        correct = false; 
       } 

       //If all fields are inputed correctly, a new customer is added 
       if (correct == true){ 

        //Hier komt de DAO insert. 


        //The login name will be the firstname followed by the first letter of the Last name. 
        final String loginName = userDetail.getFirstName().getText() + userDetail.getLastName().getText().charAt(0); 
        JOptionPane.showMessageDialog(null, "User added!\nThe login name for the admin is: " + loginName + "\n The password for user " + loginName + " is: " + randomString()); 
       } 

       //If there were some fields that were wrongly submitted, switch-case loops over the errors and generates the error message for the corresponding field 
       else{ 
        switch(ErrorMessage){ 

        case 1: 
         JOptionPane.showMessageDialog(null, "Please enter a valid enterprise name"); 
        break; 

        case 2: 
         JOptionPane.showMessageDialog(null, "Please enter a valid first name for the admin"); 
        break; 

        case 3: 
         JOptionPane.showMessageDialog(null, "Please enter a valid last name for the admin"); 
        break; 

        case 4: 
         JOptionPane.showMessageDialog(null, "Please enter a valid phone number for the admin"); 
        break; 

        case 5: 
         JOptionPane.showMessageDialog(null, "Please enter a e-mail address for the admin"); 
        break; 

        case 6: 
         JOptionPane.showMessageDialog(null, "Please enter a valid street name for the enterprise address"); 
        break; 

        case 7: 
         JOptionPane.showMessageDialog(null, "Please enter a valid street number for the enterprise address"); 
        break; 

        case 8: 
         JOptionPane.showMessageDialog(null, "Please enter a valid zip code for the enterprise address"); 
        break; 

        case 9: 
         JOptionPane.showMessageDialog(null, "Please enter a valid city name for the enterprise address"); 
        break; 

        case 10: 
         JOptionPane.showMessageDialog(null, "Please enter a valid country name for the enterprise address"); 
        break; 

        case 11: 
         JOptionPane.showMessageDialog(null, "Please enter a valid street name for the admin address"); 
        break; 

        case 12: 
         JOptionPane.showMessageDialog(null, "Please enter a valid street number for the admin address"); 
        break; 

        case 13: 
         JOptionPane.showMessageDialog(null, "Please enter a valid zip code for the admin address"); 
        break; 

        case 14: 
         JOptionPane.showMessageDialog(null, "Please enter a valid city name for the admin address"); 
        break; 

        case 15: 
         JOptionPane.showMessageDialog(null, "Please enter a valid country name for the admin address"); 
        break; 

        } 
       } 


      } 

例如: 除了电话和电子邮件各领域的认沽: 它给了错误的电子邮件通知(我进入一个好的)。

它给出了错误的电话号码通知(我输入了一个好的电话号码)。 - >它一直说我需要输入一个有效的电话号码

+0

约在首位分离的领域和项目为独立的对象是什么?一个类来处理一个条目。在当前的实现中,只报告最高编号的不匹配,因为'ErrorMessage'(应该是'errorMessage')被覆盖。您应该允许多个条目不正确。 –

+0

我其实确实得到了所有的不匹配。并且在输入有效值之后它们全部消失。然而,对于最后的不匹配,我把它放在一个有效的值后似乎没有纠正它。 –

+0

你的解决方案不会扩展(我认为它甚至不能很好地缩小)并且设计不好。此外,它会将链接的错误消息和字段分发到各地。 –

回答

1

通过“最后”,我假设你的意思是“国家”。根据你最近的评论,似乎这些是在其他地方初始化的,并且在对actionPerformed()的调用之后不会被清除,所以在下一次调用时,它们与以前的调用相同,并且如果没有错误,它们仍然具有错误值从以前的呼叫。你可能想在的actionPerformed的顶部做一个

correct = true; 

()

+0

我编辑了这个问题,查看代码后的场景。是的,我忘记提及变量private int ErrorMessage = 0; \t \t \t private boolean correct = true; ,都在顶部 –

+0

声明那么你应该在'actionPerformed()' – rslemos

+0

它的工作@rslemos的最开始重置'correct'为'true'。非常感谢你的问题是,我没有在actionPerformed()之上声明布尔值,但在它之上!多么愚蠢的错误让我感到毛骨悚然!谢谢!! –