2017-08-14 48 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

相關問題