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

Java DO WHILE循环处理手机号前导0失效问题求助

问题解决:保留手机号最后7位的前导0

你的问题根源在于用int类型存储数字会丢失前导0——整数类型本身不保留前导无效0,当输入0123456时,nextInt()会将其解析为123456,这个值小于1000000,触发循环条件导致无法通过验证。

解决方案:改用字符串存储并验证

用String类型接收输入可以完整保留前导0,同时通过规则验证确保输入是7位纯数字。修改后的代码如下:

import java.util.Scanner;

public class PhoneCode {
    static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args) {
        String phoneNum;

        do {
            System.out.print("请输入您的手机号最后7位数字: ");
            phoneNum = keyboard.nextLine().trim();
            // 验证条件:必须是7位,且全部为数字
        } while (phoneNum.length() != 7 || !phoneNum.matches("\\d+"));

        System.out.println(phoneNum);
    }
}

代码说明

  • trim():去除输入前后的空格,避免用户误输入空格导致长度不符合要求
  • phoneNum.length() != 7:确保输入恰好是7位字符
  • phoneNum.matches("\\d+"):通过正则验证输入的每一位都是数字,避免非数字字符输入
  • 用String存储可以完整保留前导0,完美满足需求

如果后续需要将字符串转为数值类型(比如计算),可以使用Long.parseLong(phoneNum)(7位数字在int范围内,但long更安全,避免位数扩展时溢出)。

内容的提问来源于stack exchange,提问作者Zaisk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:35:32