亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java登錄系統不工作;讀取第一個用戶但無法解析第二個或下一個用戶

Java登錄系統不工作;讀取第一個用戶但無法解析第二個或下一個用戶

千萬里不及你 2021-12-18 15:33:05
我已經使用數組制作了一個登錄系統。我制作了單獨的數組來存儲用戶和管理員(用戶名存儲在用戶和管理員中,密碼存儲在 usersPswd 和 adminsPswd 中)static public String users[] = new String[10];static public String usersPswd[] = new String[10];static public String admins[] = new String[10];static public String adminsPswd[] = new String[10];我還創建了兩個變量,每次創建用戶時都會遞增,以將用戶存儲在正確的索引中以及與登錄狀態相對應的狀態字符串static public int userTrackerCount = 0;static public int adminTrackerCount = 0;static public String status = "";我所做的登錄是在每次運行注冊用戶方法時將索引計數處的用戶設置為用戶名,將索引計數處的 userspswd 設置為密碼(假設用戶名和密碼在從掃描儀輸入運行此代碼之前具有值):users[uCount] = username;usersPassword[uCount] = password;或注冊管理員:admins[count] = username;adminsPassword[count] = password;這是我的登錄方法:public void login(String username, String password, String hierarchy) {    if ("admin".equals(status) || "user".equals(status)) {        System.out.println("You are already logged in");        return;    } else {        while ("".equals(status)) {            if (hierarchy.equals("admin")) {                for (int i = 0; i < admins.length; i++) {                    if (username.equals(admins[i])) {                        for (int a = 0; a < adminsPassword.length; a++) {                            if (password.equals(adminsPassword[i])) {                                System.out.println("You have successfully logged in!");編輯:我還有一個注銷方法,將狀態設置回“”,因此在登錄每個用戶后我運行此方法例如登錄注銷登錄(再次)當我在注冊兩個用戶后運行登錄方法時,第一個用戶已登錄,但無法解析第二個用戶(運行消息“無法識別用戶”)。這很奇怪,因為我在注冊用戶后檢查了 users 和 usersPswd 數組,并且用戶名和密碼都在那里。請幫助解決這個問題。如果您想查看更多代碼,我可能無法提供(因為這是針對最終項目并且存在抄襲檢查器)
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

您應該學習如何使用調試器,它會對您有所幫助。


問題出在這段代碼中:


 1 for (int i = 0; i < users.length; i++) {

 2   if (username.equals(users[i])) {

 3     for (int a = 0; a < usersPassword.length; a++) {

 4       if (password.equals(usersPassword[i])) {

 5         System.out.println("You have successfully logged in!");

 6         status = "user";

 7         currentUserIndex = i;

 8         return;

 9       } else {

10         System.out.println("Wrong password");

11         return;

12       }

13     }

14   } else {

15     System.out.println("User not recognized");

16     return;

17   }

18 }

當第二個用戶調用 login() 并且它是第 2 行的第一個循環條件時,將返回 false(第二個用戶的名稱與第一個用戶的名稱不同)。因此,第 14 行的 else 將被調用。


要更正解決方案,您可以在第 14 行刪除 else 并在 for 循環后添加 if 塊:


//no changes before

} else if (hierarchy.equals("user")) {

    for (int i = 0; i < users.length; i++) {

        if (username.equals(users[i])) {

            for (int a = 0; a < usersPassword.length; a++) {

                if (password.equals(usersPassword[i])) {

                    System.out.println("You have successfully logged in!");

                    status = "user";

                    currentUserIndex = i;

                    return;

                } else {

                    System.out.println("Wrong password");

                    return;

                }

            }

        }

    }

    if (!status.equals("user")) {

        System.out.println("User not recognized");

        return;

    }

}

//no changes after


查看完整回答
反對 回復 2021-12-18
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號