Java登录程序整合while循环实现输入校验求助
解决Java登录程序的循环验证问题
嘿,刚从Python转Java很正常,咱们来一步步调整你的代码,实现「用户名不对就一直输用户名,对了再输密码,密码不对也一直输」的逻辑~
首先先说说你现有代码里的小问题:
- 没必要创建两个
Scanner对象,一个就足够处理所有输入,多创建反而容易导致资源没正确释放 - 现在的逻辑是哪怕用户名错了,程序还是会继续让你输密码,这不符合你想要的流程
接下来是修改后的完整代码,我加了详细注释,你一看就懂:
import java.util.Scanner; public class Login { public static void main(String[] args) { // 预设的正确用户名和密码 String correctUsername = "KenBoneL0ver"; String correctPassword = "KenBone4Life"; // 只需要一个Scanner来处理所有输入 Scanner scanner = new Scanner(System.in); // 处理用户名循环输入 String usernameInput; while (true) { System.out.println("Please enter your username:"); usernameInput = scanner.nextLine(); if (usernameInput.equals(correctUsername)) { // 用户名正确,跳出循环,进入密码环节 break; } else { System.out.println("Incorrect username. Please try again:"); } } // 处理密码循环输入 String passwordInput; while (true) { System.out.println("Now please enter the correct password:"); passwordInput = scanner.nextLine(); if (passwordInput.equals(correctPassword)) { // 密码正确,跳出循环,显示成功信息 break; } else { System.out.println("Incorrect password. Please try again:"); } } // 登录成功提示 System.out.println("You have successfully logged in!"); // 最后关闭Scanner scanner.close(); } }
关键逻辑说明:
- 用
while(true)创建一个无限循环,直到用户输入正确的内容,就用break跳出循环 - 只使用一个
Scanner对象,避免不必要的资源浪费 - 严格遵循「先过用户名验证,再过密码验证」的流程,用户名不对就一直停在用户名输入阶段
给你这个Java新手的小提示:
- Java里比较字符串内容一定要用
equals()方法,不能用==(==是比较内存地址,不是内容,这和Python不一样哦) - 用完
Scanner后记得调用close()关闭,养成良好的资源管理习惯
内容的提问来源于stack exchange,提问作者OwenMc
相关产品推荐
相关产品推荐

