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

Java实现可选择统计奇偶数字的函数需求及代码优化问询

Java 奇偶数字统计函数优化方案

需求明确

需要实现一个Java函数,支持指定统计目标(奇数/偶数),统计给定数字中的对应数字个数,并关联用户名输出格式如[用户名]的数字中有[数量]个[奇数/偶数]的结果。

原代码问题

原函数存在以下不足:

  • 强制同时统计并输出奇偶数量,无法选择单一统计类型;
  • 仅支持正整数输入,无法处理长数字字符串(示例中的数字若转int可能溢出);
  • 返回值逻辑与需求无关,未实现指定格式的输出。

优化后的实现代码

// 定义统计类型枚举,明确可选统计目标
enum CountType {
    ODD, EVEN
}

public class NumberCounter {
    /**
     * 统计指定数字字符串中奇数/偶数的个数,并按要求格式输出
     * @param userName 关联的用户名
     * @param numberStr 待统计的数字字符串
     * @param type 统计类型:ODD(奇数)/EVEN(偶数)
     */
    public static void countAndPrint(String userName, String numberStr, CountType type) {
        int count = 0;
        // 遍历数字字符串的每个字符
        for (char c : numberStr.toCharArray()) {
            if (Character.isDigit(c)) {
                int digit = Character.getNumericValue(c);
                // 根据统计类型判断是否计数
                boolean isTarget = (type == CountType.EVEN && digit % 2 == 0) 
                                || (type == CountType.ODD && digit % 2 != 0);
                if (isTarget) {
                    count++;
                }
            }
        }
        // 生成并输出指定格式的结果
        String typeName = type == CountType.EVEN ? "偶数" : "奇数";
        System.out.printf("%s的数字中有%d个%s%n", userName, count, typeName);
    }

    // 测试示例
    public static void main(String[] args) {
        countAndPrint("JEAN", "5143436111", CountType.ODD);
        countAndPrint("SAMI", "4501897654", CountType.EVEN);
    }
}

代码说明

  1. 统计类型枚举:用CountType枚举限定可选的统计目标,避免参数传入错误值;
  2. 字符串参数处理:使用字符串接收数字,支持任意长度的数字输入,避免整数溢出问题;
  3. 精准统计逻辑:遍历每个字符,仅统计符合指定类型的数字;
  4. 格式输出:严格按照需求生成输出文本,匹配示例格式。

运行结果

执行main方法后,输出:

JEAN的数字中有7个奇数
SAMI的数字中有5个偶数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:05:27