You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从方法中退出循环?附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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:05:15