如何在Java中实现PrintSolution函数以遍历打印城市数组?
问题解决:实现PrintSolution函数并修正PrintCity方法
首先要明确:你现有的PrintCity静态无参方法无法满足打印每个城市实例信息的需求——它只能访问类的静态成员,没法获取数组中每个Cities对象的专属属性。下面提供两种可行的实现方案:
方案1:将PrintCity改为实例方法
把PrintCity改为Cities类的实例方法,让它直接访问当前对象的属性:
public class Cities { // 假设类内有这些属性(建议封装为私有,通过实例方法访问) private String cityId; private int City_X_Location; private int City_Y_Location; // 构造方法、属性的setter/getter省略 public void PrintCity() { System.out.println(cityId + " " + City_X_Location + " " + City_Y_Location); } }
然后实现PrintSolution函数,遍历数组调用每个实例的PrintCity:
public static void PrintSolution(Cities[] c) { // 普通for循环写法 for (int i = 0; i < c.length; i++) { // 增加非空判断,避免空指针异常 if (c[i] != null) { c[i].PrintCity(); } } // 或者更简洁的增强for循环写法 for (Cities city : c) { if (city != null) { city.PrintCity(); } } }
方案2:修改PrintCity为接收Cities参数的静态方法
如果要保留PrintCity的静态特性,修改它来接收Cities实例作为参数,通过实例获取属性:
public class Cities { private String cityId; private int City_X_Location; private int City_Y_Location; // 构造方法、getter方法(推荐用getter访问私有属性) public String getCityId() { return cityId; } public int getCityXLocation() { return City_X_Location; } public int getCityYLocation() { return City_Y_Location; } public static void PrintCity(Cities city) { System.out.println(city.getCityId() + " " + city.getCityXLocation() + " " + city.getCityYLocation()); } }
对应的PrintSolution实现:
public static void PrintSolution(Cities[] c) { // 普通for循环写法 for (int i = 0; i < c.length; i++) { if (c[i] != null) { Cities.PrintCity(c[i]); } } // 增强for循环写法 for (Cities city : c) { if (city != null) { Cities.PrintCity(c[i]); } } }
内容的提问来源于stack exchange,提问作者NewCoder2001
相关产品推荐
相关产品推荐

