如何跨类访问二维数组并实现颜色到水果的映射功能?
代码实现方案
二维数组实现版本
先修正你代码里的基础问题:Java中字符串必须用双引号包裹(比如"red"、"apple"),方法参数的类型string要改为Java标准的大写String。
实现setFood()方法
这个方法负责初始化二维数组,将颜色与水果的对应关系存入其中:
public void setFood(){ // 二维数组每行格式为 [颜色, 对应水果] food = new String[][]{ {"red", "apple"}, {"yellow", "banana"}, {"orange", "orange"} // 可继续添加更多颜色-水果映射关系 }; }
实现getFruit(String colour)方法
遍历二维数组,匹配目标颜色后返回对应水果;若未匹配到可返回null或自定义默认值:
public String getFruit(String colour){ // 先判断数组是否初始化,避免空指针异常 if(food == null){ setFood(); // 未初始化则先执行初始化 } // 遍历二维数组的每一组映射 for(String[] pair : food){ // pair[0]存储颜色,pair[1]存储对应水果 if(pair[0].equals(colour)){ return pair[1]; } } // 无匹配颜色时返回null,也可改为返回"未知水果"这类提示文本 return null; }
优化建议:使用HashMap(查找效率更高)
如果仅做键值对查找,HashMap的效率优于二维数组(无需遍历所有元素),实现也更简洁:
// 替换原二维数组为HashMap private Map<String, String> foodMap; public void setFood(){ foodMap = new HashMap<>(); foodMap.put("red", "apple"); foodMap.put("yellow", "banana"); foodMap.put("orange", "orange"); } public String getFruit(String colour){ if(foodMap == null){ setFood(); } // 直接通过颜色键获取对应水果,无匹配时返回null return foodMap.get(colour); }
内容的提问来源于stack exchange,提问作者epsilonolispe
相关产品推荐
相关产品推荐

