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); } }
代码说明
- 统计类型枚举:用
CountType枚举限定可选的统计目标,避免参数传入错误值; - 字符串参数处理:使用字符串接收数字,支持任意长度的数字输入,避免整数溢出问题;
- 精准统计逻辑:遍历每个字符,仅统计符合指定类型的数字;
- 格式输出:严格按照需求生成输出文本,匹配示例格式。
运行结果
执行main方法后,输出:
JEAN的数字中有7个奇数 SAMI的数字中有5个偶数
内容的提问来源于stack exchange,提问作者kingRolodex
相关产品推荐
相关产品推荐

