需要帮助在我的java程序中插入while循环。希望程序更好地处理不正确的输入

需要帮助在我的java程序中插入while循环。希望程序更好地处理不正确的输入,java,while-loop,Java,While Loop,这是迄今为止我的代码,只有在输入匹配的用户名和密码后,works才会显示欢迎消息 我不确定如何集成while循环,如果usernameInput字符串与username字符串不匹配,则该循环会阻止用户进入密码阶段,并反复循环,直到输入正确的用户名。之后,我希望对passwordInput字符串执行相同的操作,直到它与密码字符串匹配为止。其想法是让程序能够反复循环,直到用户输入正确的用户名和密码 [注意:我是从python的基础知识开始学习java的,所以一切都可能有点混乱和低效] import

这是迄今为止我的代码,只有在输入匹配的用户名和密码后,works才会显示欢迎消息

我不确定如何集成while循环,如果usernameInput字符串与username字符串不匹配,则该循环会阻止用户进入密码阶段,并反复循环,直到输入正确的用户名。之后,我希望对passwordInput字符串执行相同的操作,直到它与密码字符串匹配为止。其想法是让程序能够反复循环,直到用户输入正确的用户名和密码

[注意:我是从python的基础知识开始学习java的,所以一切都可能有点混乱和低效]

import java.util.Scanner;

public class Login {

    public static void main(String[] args) {
        
        String username,usernameInput, password, passwordInput;
        username= "KenBoneL0ver";
        password= "KenBone4Life";
        
        Scanner myObj1= new Scanner(System.in);
        
        System.out.println("Please enter your username:");
        usernameInput= myObj1.nextLine();
        
        if (!usernameInput.equals(username)) {    
            System.out.println("Incorrect username. Please try again:");
        }
        else {
            System.out.println("Now please enter the correct password:");
        }
        
        Scanner myObj2= new Scanner(System.in);
        
        passwordInput= myObj2.nextLine();
        
        if (!passwordInput.equals(password)) {
            System.out.println("Incorrect password. Please try again:");
        }
        else {
            System.out.println("You have successfully logged in!"); 
        }
        
        myObj1.close();
        myObj2.close();
    }

}

谢谢你的帮助

你能检查一下你是否在找这样的东西吗

import java.util.Scanner;

public class Login {

    public static void main(String[] args) {
        Scanner myObj1 = null;
        try {
            String username, usernameInput, password, passwordInput;
            username = "KenBoneL0ver";
            password = "KenBone4Life";

            myObj1 = new Scanner(System.in);

            while (true) {
                System.out.println("Please enter your username:");
                usernameInput = myObj1.nextLine();
                if (!usernameInput.equals(username)) {
                    System.out.println("Incorrect username. Please try again:");
                    continue;
                }
                break;
            }

            while (true) {
                // Scanner myObj2 = new Scanner(System.in);
                System.out.println("Now please enter the correct password:");
                passwordInput = myObj1.nextLine();

                if (!passwordInput.equals(password)) {
                    System.out.println("Incorrect password. Please try again:");
                    continue;
                } else {
                    System.out.println("You have successfully logged in!");
                    break;
                }
            }

            // myObj2.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (myObj1 != null) {
                myObj1.close();
            }
        }

    }
}
输出:

Please enter your username:
test
Incorrect username. Please try again:
Please enter your username:
KenBoneL0ver
Now please enter the correct password:
test
Incorrect password. Please try again:
Now please enter the correct password:
KenBone4Life
You have successfully logged in!

您可以使用while循环:

while (someBooleanCondition) {
    statement(s);
}
当这两个条件都为true password和username时,布尔条件将中断while循环并告诉用户他们已成功登录


在检查内部条件时,可以使用赋值运算符,同时: 虽然username.equalUsernameInput=scan.nextLine。这样就不需要任何额外的布尔变量和/或break/continue语句来实现必要的流

除了与扫描仪使用相关的评论:

不需要创建单独的实例来输入用户名和密码。 很高兴看到您关心关闭两个Scanner实例。但是,使用try with resources构造可以保证实现自动关闭接口的资源将自动关闭。 也就是说,代码可以重写如下:

导入java.util.Scanner; 公共类登录{ 公共静态无效字符串[]args{ 一串 用户名=用户, 密码=pswd, 用户名输入, 密码输入; 尝试扫描仪扫描=新建ScannerSystem.in{ System.out.println请输入您的用户名:; while!username.equalusernameinput=scan.nextLine{ System.out.println用户名不正确。请重试:; } System.out.PrintLNow请输入正确的密码:; while!password.equalpasswordinput=scan.nextLine{ System.out.println密码不正确。请重试:; } System.out.println您已成功登录!; } } }
创建一个while循环,该循环在布尔变量为false时继续,然后在给出正确的用户名和密码后,在循环内将该变量设置为true。我的主要目标是复制我过去在python中所做的事情,然而,在找到了对此的支持之后,我很难理解java处理用户输入的方式。然而,你的编辑正是我想要做的。非常感谢你。你不知道有什么适合初学者的好资源可以解释try、continue、break关键字吗?