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

Java二维字符串数组中年龄元素与整数比较统计成年未成年人数问题

错误原因

  • 二维数组元素访问逻辑错误:guestList[j]是String[]类型的数组对象,直接转字符串得到的是数组的内存地址标识[Ljava.lang.String;@xxxx,完全不是年龄数值的字符串,所以触发NumberFormatException
  • 逻辑冗余:你不需要嵌套两层循环,每一行对应1位宾客,只需要遍历所有行,取每行下标为1的元素就是年龄值
  • 循环边界错误:原代码内层循环的边界使用了外层数组的长度guestList.length,即使要遍历子元素也应该用guestList[i].length,逻辑完全错位

修正后代码

public class Test {
    public static void main(String[] args) {
        String[][] guestList = {{"Adam Ason", "35"},
                {"Berta Bson", "70"},
                {"Ceasar Cson", "12"}};
        int tempAge;
        int adultGuests = 0;
        int childGuests = 0;

        // 仅遍历所有宾客(二维数组的每一行)即可
        for (int i = 0; i < guestList.length; i++) {
            // 取当前行下标为1的元素就是年龄,直接转int
            tempAge = Integer.parseInt(guestList[i][1]);
            if (tempAge <= 18) {
                childGuests += 1;
            } else {
                adultGuests += 1;
            }
        }

        System.out.println("Adult guests: " + adultGuests);
        System.out.println("Children guests: " + childGuests);
    }
}

运行输出

Adult guests: 2
Children guests: 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:39:03