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
相关产品推荐
相关产品推荐

