簡體   English   中英

我的登錄方法返回 true 和 false output,為什么?

[英]My login method returns both true and false output, why?

我仍然無法弄清楚我的代碼有什么問題。

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        
        System.out.println("[1] Register");
        System.out.println("[2] LogIn as Client");
        System.out.println("[3] LogIn as Admin");
        System.out.println("[4] Exit");
        
        System.out.print("Enter your choice here: ");
        int choice = input.nextInt();
        switch(choice){
            case 1:
                System.out.println("[Register Your Account]");

                System.out.print("-----Enter your name: ");
                String name = input.next();
        
                System.out.print("-----Enter your desired 4-digit pin: ");
                int pin = input.nextInt();
          
                System.out.print("-----Enter your first deposit: ");
                int balance = input.nextInt();
                
                account client = new account(name,pin,balance);
                
                client.setName(name);
                client.setPin(pin);
                client.setBalance(balance); 
                
                addToArrayList(client);
  
            case 2:
                System.out.println("[LogIn Your Account]");
                System.out.println("----Enter Your Pin: ");
                int logPin = input.nextInt();
                
                logIn(logPin);
        
                break;

            case 3:
                System.out.println("Case 3");
                

                break;
                
            case 4:
                System.out.println("Case 4");
                break;
        }
}  
    
    static void addToArrayList(account client){
        userList.add(client);
        
        displayRegister(userList);   
    }
    
    static void displayRegister(ArrayList<account> users){
        for (account client : users){
        System.out.println("(Here's what we received)");
        System.out.println(client.getName());
        System.out.println(client.getPin());
        System.out.println(client.getBalance());

        }
    }

為什么當我在注冊后輸入正確的 PIN 碼時,我的登錄會給出 output 的 TRUE 和 FALSE,如果我輸入錯誤的 PIN 碼,程序就會結束?

    static void logIn (int logPin){
        if(!userList.isEmpty()){
                    int i = 0;
                    boolean isNotExist = false;
                    
                    for(var acc: userList){
                        int pinCode = acc.getPin();
                        
                        if(logPin==acc.getPin()){
                            System.out.println("(LogIn Successfully!)");
                            isNotExist=true;
                            mainMenu();
                        }
                        else{
                            i++;
                        }
                    }
                    if(isNotExist){
                        System.out.println("(Account does not exist...)");
                    }
                }else{
                    System.out.println("(No data...)");
         }
               
    }

使用您編寫的此方法:

static void logIn (int logPin){...}

當你調用它時,你什么也得不到。 因為它是void返回類型。 然而,

static boolean logIn (int logPin){...}

會給你一個truefalse的回報,因為它是boolean 然后這樣稱呼它:

boolean success = logIn(logPin);

編輯以獲取更多信息使用該方法的boolean返回類型,您將需要返回值isNotExist而不是僅在方法中聲明並為其賦值:

{
    boolean isNotExist = false;
    ...
    // Code to assign value
    ...
    return isNotExist;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM