2016-04-17 89 views
3

我正在進行任務,感覺超級接近!但我只是不明白我收到的最後一條錯誤消息,並且想知道你是否可以幫助我理解它,所以我在將來避免它。將集合轉換爲字符串,獲取無效的方法聲明

分配開始了與一個示例代碼:

import java.util.*; 

public class Proj09{ 
    public static void main(String args[]){ 
    new Proj09Runner().getCollection(); 
    } 
} 

class Proj09Runner{ 
    public void getCollection(){ 
     Collection collection = new TreeSet(); 
     Populator.fillIt(collection); 
     Iterator iter = collection.iterator(); 
     while(iter.hasNext()){ 
      System.out.print(iter.next()); 
     } 
    System.out.println(); 
    } 
} 

class Populator{ 
    public static void fillIt(Collection collection){ 
     collection.add("Able"); 
     collection.add("Baker"); 
     collection.add("aBle"); 
     collection.add("Charley"); 
     collection.add("Baker"); 
    } 
} 

輸出:能貝克能夠查理貝克

我們的工作就是這樣,它適合不同的主要是我改變代碼不能編輯:

import java.util.*; 

public class Proj09{ 
    public static void main(String args[]){ 
     Proj09Runner runner = new Proj09Runner(); 

     Collection <String> collection = runner.getCollection(); 

     collection.add("Able"); 
     collection.add("Baker"); 
     collection.add("aBle"); 
     collection.add("Charley"); 
     collection.add("Baker"); 

     Iterator <String> iter = collection.iterator(); 
     while(iter.hasNext()){ 
      System.out.print(iter.next() + " "); 
     } 
     System.out.println(); 
    } 
} 

到目前爲止,我一直在玩的Proj09Runner類:

class Proj09Runner extends Proj09{ 
    public void getCollection(){ 
    System.out.println("My Name."); 
    System.out.println(); 
    } 
} 

對輸出的小改動,我應該添加我的名字。 所需的輸出: 我的名字 能貝克能夠查理貝克

但我不斷收到這回行了Collection <String> collection = runner.getCollection();主我不應該改變不同的錯誤。我會在void無法轉換爲Collection <String>或「無效的方法聲明;需要返回類型」時被調用。

你們能幫我弄清楚爲什麼我會收到這些信息以及它們是什麼意思,以便我可以在將來避免它們?

謝謝,我真的很感激它。

+0

您必須更改'getCollection'的返回類型。 – Radiodef

回答

0

我想先走,並分享了答案:

import java.util.*; 

class Proj09Runner{ 
    public Collection <String> getCollection(){ 
     System.out.println("Name."); 
     Collection collection = new ArrayList(); 
     return collection; 
    } 
} 

我不能去TreeSet的,因爲它不接受重複,因此將只打印「貝克」一次,所以我有ArrayList中去代替。

感謝一堆的反饋!

0

這肯定需要改進:

Collection <String> collection = runner.getCollection(); 

這不返回Collection<String>,注意你的方法什麼都不返回。

public void getCollection(){ 

無論你的方法的返回類型和定義的變化是這樣的:

public Collection<String> getCollection(){ //followed by corresponding definition 

或者你可以簡單地使用

Collection <String> collection = new HashSet() ; //whatever your collection pertain to 
0
public Collection<String> getCollection(){ 
     Collection collection = new TreeSet(); 
     Populator.fillIt(collection); 
     Iterator iter = collection.iterator(); 
     while(iter.hasNext()){ 
      System.out.print(iter.next()); 
     } 
    System.out.println(); 
    return collection; 
    } 

getCollection method將返回nothing。它應該返回一個collection

0

我一直在嘗試這個,它似乎是一個很好的方向。使主:

import java.util.*; 

public class Proj09{ 
    public static void main(String args[]){ 
     Proj09Runner runner = new Proj09Runner(); 

     Collection <String> collection = runner.getCollection(); 

     collection.add("Able"); 
     collection.add("Baker"); 
     collection.add("aBle"); 
     collection.add("Charley"); 
     collection.add("Baker"); 

     Iterator <String> iter = collection.iterator(); 
     while(iter.hasNext()){ 
      System.out.print(iter.next() + " "); 
     } 
     System.out.println(); 
    } 
} 

現在我已經得到了:

class Proj09Runner{ 
    public Collection<String> getCollection(){ 
     return "Hailey"; 
    } 
} 

我不想重申了已經在主要的,因爲它似乎沒有必要。返回字符串「Hailey」解決了舊錯誤,但新的錯誤已經出現。

error: cannot find symbol 
public Collection<String> getCollection(){ 
    ^
symbol: class Collection 
location: class Proj09Runner 

你知道錯誤類型是什麼意思嗎?

我們的最後一個單元是關於繼承,我玩過「Proj09Runner extends Proj09 {」但它似乎沒有效果。

相關問題