2017-08-14 49 views
-1

这是一个读取文件的程序,如果它不存在或为空,它调用一个方法将一个对象添加到ArrayList中,然后调用一个WriteFile方法将该对象写入文件。第一次登录无效,第二次有效

try{ 
     FileReader fr = new FileReader(managerFile); 
     BufferedReader br = new BufferedReader(fr); 


    }catch (IOException e){ 
     System.out.println("New System. Register as Manager to start using it."); 
     manager.add(AddManager()); 
     WriteFile(managerFile, manager); 
    } 
    do{ 
     try{ 
      select = Personnel(); 

      switch(select){ 
       case 1: 
        if(BLogIN(beautician)){ 
         Action(select, Menu(select),customer); 
        } 
        else{ 
         Main.main(args); 
        } 
        break; 
       case 2: 
        if(MLogIN(manager)){ 
         Action(select, Menu(select), customer); 
        } 
        else{ 
         Main.main(args); 
        } 
        break; 
       case 3: 
        break; 
       default: 
        System.out.println("Invalid Selection."); 
        System.out.println("Please choose only from the options above"); 
        System.out.println(""); 
        break; 
      } 
     }catch (InputMismatchException e){ 

     } 
    }while(select < 1 || select > 3); 

写入文件后,它调用传递前面的ArrayList这个方法我输入正确的ID和密码,它说无效后处理登录

public static boolean MLogIN(ArrayList<Manager> a){ 

    boolean valid = true; 

    Scanner scan = new Scanner(System.in); 

    System.out.print("Enter Manager ID :"); 
    String id = scan.next(); 
    System.out.print("Enter Password :"); 
    String pass = scan.next(); 
    for(int i = 0; i < a.size(); i++){ 
     valid = id.equals(a.get(i).getID()); 
     valid = pass.equals(a.get(i).getPass()); 
    } 

    return valid; 
} 

一个登录的方法,但我第二次登录,它是有效的。为什么?

+2

欢迎来到Stack Overflow!你已经在你的问题中发布了很多代码,这使得我们(以及未来的读者)不清楚问题出在哪里。请将您的问题代码减少到10行或更少。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)和[如何调试小程序](https://ericlippert.com/2014/03/05 /如何调试的小程序/)。 –

+1

我认为你调试你自己的代码会显示比你在这里发布的问题更多的信息。我们无法为您调试您的代码。 –

+1

@JoeC如果我确切地知道问题出在哪里,我甚至不会来这里问。 –

回答

-1

您的条件检查用户的输入是否正确,是不正确。 它应该像下面这样:

public static boolean MLogIN(ArrayList<Manager> a){ 

    boolean valid = false; 

    Scanner scan = new Scanner(System.in); 

    System.out.print("Enter Manager ID :"); 
    String id = scan.next(); 
    System.out.print("Enter Password :"); 
    String pass = scan.next(); 

    for(int i = 0; i < a.size(); i++) { 
     if (id.equals(a.get(i).getID()) && pass.equals(a.get(i).getPass())) { 
      valid = true; 
      break; 
     } 
    } 

    return valid; 
} 
+0

尽管您可能已经解决了此用户的问题,但仅有代码的答案对于未来出现此问题的用户来说并不是非常有用。请编辑您的答案,以解释为什么您的代码可以解决原始问题。 –

+0

我写了一行“你的条件来检查用户的输入是否正确,是不正确的,它应该如下所示:” 如果条件错误,可能需要更多解释? 当然,我不应该解释什么是'布尔值'做以及如何写'if else'条件 –

+0

Hi @KavishMittal,JoeC想告诉你的是你可能已经解决了这个问题,但是这可以在调试中找到哪些OP可能没有用过。因此,不要告诉/纠正代码,你可以提供OP可以在他的代码中寻找纠正的信息。 :-) – Aman

相关问题