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

Java二维数组年龄解析问题求助:统计18岁以上宾客数量

解决Java中统计18岁以上宾客人数的问题

原代码的问题分析

  • 嵌套循环逻辑错误:你的guestList是每个元素包含「姓名、年龄」的二维数组,外层循环已经能遍历所有宾客,不需要内层循环。原内层循环会重复遍历整个宾客列表,而且guestList[j]是一个一维数组,直接和整数18比较完全不合法,会编译报错。
  • 未将年龄字符串转为整数:年龄存在数组的第二个位置(索引1),是String类型,必须用Integer.parseInt()方法转成int类型才能和18做数值比较。
  • 存在未使用的冗余变量:counter2、alder这些变量没有实际作用,可以删除。

修正后的代码

public static void statistics() {
    int counter1 = 0;

    String[][] guestList = {
        {"Adam Ason", "35"},
        {"Berta Bson", "70"},
        {"Ceasar Cson", "12"},
        {"Derta Dson", "20"},
        {"Erta Eson", "54"},
        {"Ferta Fson", "26"},
        {"Gerta Gson", "59"},
        {"Herta Hson", "72"},
        {"Irta Ison", "14"},
        {"Jerta Json", "32"}
    };

    int totalGuests = guestList.length;
    System.out.println("Number of guests: " + totalGuests);

    // 遍历每个宾客
    for (int i = 0; i < guestList.length; i++) {
        // 取出当前宾客的年龄字符串,转成整数
        int age = Integer.parseInt(guestList[i][1]);
        // 判断年龄是否大于等于18
        if (age >= 18) {
            counter1++;
        }
    }

    System.out.println("Number of guests over the age of 18: " + counter1);
}

关键步骤说明

  1. 字符串转整数:用Integer.parseInt(guestList[i][1])把每个宾客的年龄字符串转为int类型,这是实现数值比较的核心操作。
  2. 简化循环:只保留外层循环遍历所有宾客,每次取当前宾客数组的第二个元素(索引1)作为年龄。
  3. 计数优化:用counter1++替代counter1 = counter1 + 1,写法更简洁。

如果担心年龄字符串可能不是合法数字(比如出现非数字字符),可以加上异常处理避免程序崩溃:

try {
    int age = Integer.parseInt(guestList[i][1]);
    if (age >= 18) {
        counter1++;
    }
} catch (NumberFormatException e) {
    System.out.println("宾客" + guestList[i][0] + "的年龄格式错误");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:05:32