如何从方法中退出循环?附Java用户名验证代码求助
问题解答
你的当前代码既无法通过编译,也不能实现从方法中终止循环的需求,具体问题和修复方案如下:
1. 现存问题
- 编译错误:
main方法里的accepted=false;未声明变量类型,必须加上boolean修饰符才能正常编译,即boolean accepted=false;。 - 逻辑缺陷:
nickName是无返回值的void方法,无法修改main方法中accepted变量的值。不管用户名是否符合规则,while(!accepted)的循环都会一直执行,因为accepted始终是false,永远不会触发终止条件。
2. 修复方案
最简洁合理的方式是让nickName方法返回boolean类型,用返回值告知调用者用户名是否验证通过,从而控制循环的终止:
import java.util.Scanner; public class Username { public static void main(String[] args) { Scanner scan = new Scanner(System.in); boolean accepted = false; while(!accepted) { System.out.println("Please create a suitable Nickname:"); accepted = nickName(scan.next()); } } public static boolean nickName(String name) { if (name.length() < 8) { System.out.println("Nickname must be at least 8 Characters"); return false; } else if (name.length() >= 16) { System.out.println("Nickname must be lesser than 16 Characters"); return false; } else if (name.contains("é") || name.contains("*") || name.contains("!") || name.contains("$")) { System.out.println("Nickname should not contain (é,*,!,$) characters"); return false; } else { System.out.println("Your Nickname: " + name + " is created"); return true; } } }
方案说明
- 当用户名不符合规则时,
nickName返回false,循环继续执行; - 当用户名符合所有规则时,
nickName返回true,accepted被赋值为true,循环终止。
内容的提问来源于stack exchange,提问作者MTC
相关产品推荐
相关产品推荐

