正如标题所说,我正在尝试从名为Hill的类到我的公共类调用下面的方法,我也想将返回列表存储在本地列表中。

 public static List<Hill> readHills() {

    String destination = "****";

    List<Hill> hill = new ArrayList<>();


    try {
        BufferedReader br = new BufferedReader(new FileReader(new File(destination)));
        String fileContents = "";
        int line = 0;

        while ((fileContents = br.readLine()) != null) {
            if (line == 0) {
                line++;
                continue;
            } else {
                String[] entries = fileContents.split(",");
                Hill placeholder = new Hill(Integer.parseInt(entries[0]), entries[1], entries[2], Double.parseDouble(entries[4]), Double.parseDouble(entries[5]), Double.parseDouble(entries[6]));
                hill.add(placeholder);
                line++;
            }
        }
    }

    catch(FileNotFoundException fnfe) {
        System.out.println("Unable to find file");
    }

    catch(IOException e) {
        System.out.println("Error");
    }
    return hill;
}


这是我尝试调用上述方法的方法

public static void exercise5b() {
    Hill mylist = new Hill();
    //List<Integer> mylist = Hill.readHills();
}


但是这样做时,我在Hill()上收到了一个错误;说明不能在Hill()中应用Hill。下面的代码还显示了我的班级希尔所包含的内容

class Hill {

public int number;
public String name;
public String county;
public double height;
public double latitude;
public double longitude;

Hill (int number, String name, String county, double height, double latitude, double longitude){
    this.number = number;
    this.name = name;
    this.county = county;
    this.height = height;
    this.latitude = latitude;
    this.longitude = longitude;
}

最佳答案

您必须创建一个没有任何参数的构造函数:

public Hill() {
}


或者,您应该将所有参数传递给构造函数。

因此,您可以创建Hill类的Object并调用您的方法:

Hill mylist = new Hill();
List<Hill> list = mylist.readHills();



您的方法返回Hill对象而不是Integer
您不能使用与对象相同的名称来命名列表
因为您要在方法中设置静态值,所以可以像List<Hill> list = Hill.readHills();这样调用它,因此无需创建Hill类型的Object




编辑

另一个问题,我认为您的索引在这里不正确:


    Hill占位符=新Hill(Integer.parseInt(entries [0]),条目[1],
            entry [2],Double.parseDouble(entries [4]),Double.parseDouble(entries [5]),
    // -------------- ^ ------------------------------ ^
            Double.parseDouble(entries [6]));


当您的数组不包含此索引时,发生java.lang.ArrayIndexOutOfBoundsException: 6错误。

07-26 01:38