Java作业:如何用HashMap中匹配的动物对象填充数组
问题解决:将HashMap中棕色动物依次存入数组
你的代码之所以会把数组全填充成最后一只匹配的动物,核心问题是嵌套了数组遍历循环——每找到一只棕色动物,就会把它重复赋值给数组的所有索引位置,最后自然只剩最后一次循环的动物。
修正后的代码如下:
// 假设zooAnimals已经被正确初始化并填充了数据 HashMap<String, Animal> zooAnimals = new HashMap<>(); // 初始化数组,长度设为10 Animal[] animalArray = new Animal[10]; // 用单独的索引变量记录当前要填充的位置 int index = 0; for(String key : zooAnimals.keySet()) { Animal currentAnimal = zooAnimals.get(key); // 判断动物颜色为棕色,且数组还没填满 if("Brown".equals(currentAnimal.getColor()) && index < animalArray.length) { animalArray[index] = currentAnimal; index++; // 填充后索引自增,准备下一个位置 } }
关键改动说明:
- 移除内层数组遍历循环,改用
index变量追踪当前填充位置,初始值为0 - 每次找到符合条件的动物后,仅赋值给
animalArray[index],随后index自增,实现依次填充到下一个索引 - 新增
index < animalArray.length的判断,避免数组越界报错(若棕色动物数量超过10只,超出部分会被忽略)
内容的提问来源于stack exchange,提问作者chalcedony
相关产品推荐
相关产品推荐

