2017-04-15 54 views
1

正如標題所示,我試圖從一個名爲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()中應用。下面還代碼顯示了我的課希爾包含

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; 
} 
+0

您已經重寫了默認構造函數,因此在構造對象時必須提供「Hill」構造函數的參數。或者,您可以創建一個沒有任何參數的構造函數,然後它就會有效。 –

回答

1

你必須不帶任何參數來創建一個構造函數:

public Hill() { 
} 

還是應該將所有參數傳遞給你的構造。

所以,你可以創建類山的對象,並調用你的方法:

Hill mylist = new Hill(); 
List<Hill> list = mylist.readHills(); 
  1. 你的方法返回一個山對象,而不是一個整數
  2. 不能名稱同名的名單你的對象
  3. 因爲你設置在你的方法靜態的,你可以這樣調用List<Hill> list = Hill.readHills();,你並不需要創建類型的對象山

編輯

另外一個問題,我想你的指數是不正確的位置:當你的陣列不包含這個指標

 

    Hill placeholder = new Hill(Integer.parseInt(entries[0]), entries[1], 
      entries[2], Double.parseDouble(entries[4]), Double.parseDouble(entries[5]), 
    //--------------^------------------------------^   
      Double.parseDouble(entries[6])); 

java.lang.ArrayIndexOutOfBoundsException: 6錯誤發生。

+0

Ahh ok是有道理的,這有點改變我的問題,是否有可能在不通過構造函數的情況下返回readHills()中的列表,因爲我沒有所有參數,因爲它們在那個列表中。 – beeman

+0

剛剛看到你的編輯說它可能和實現它,但得到異常的線程「主」java.lang.ArrayIndexOutOfBoundsException:6 – beeman

+0

@ beeman這是另一個問題,但我認爲你犯了一個小錯誤檢查我的編輯我會告訴你在哪裏 –

相關問題