2014-02-23 48 views
1
public static getDeck(ArrayList<Integer> cards) { 
    for (int total = 1; total !=5; total++) { 
     for (int suit = 1; suit != 14; suit++) { 
      cards.add(suit); 
     } 
    } 
    Collections.shuffle(cards); // Randomize the list 
    return cards; 
} 

public static void main(String[] args) { 
    // Create the cards here. 
    ArrayList<Integer> cards = new ArrayList<>(); 
    cards = getDeck(cards); 
} 

我想能夠調用getDeck函數,它將向我傳遞的Arraylist添加52個數字。在這種情況下卡。然後返回這個對象並將其設置爲卡片。如何從公共方法/函數返回ArrayList

我得到的錯誤是如此。

enter image description here

+0

你忘了指定的方法聲明的返回類型。 –

+0

噢,對不起,請問我需要哪種退貨類型?對不起,我很新。 – jackdh

+0

您是否真的閱讀過編譯器錯誤信息? –

回答

5

沒有爲getDeck沒有返回類型,則需要將其指定爲ArrayList<Integer>或任何其超類型的,你的情況

public static ArrayList<Integer> getDeck(ArrayList<Integer> cards) { 
    for (int total = 1; total !=5; total++) { 
     for (int suit = 1; suit != 14; suit++) { 
      cards.add(suit); 
     } 
    } 
    Collections.shuffle(cards); // Randomize the list 
    return cards; 
} 
+0

啊謝謝你!我認爲這已經成功了! – jackdh

+0

FWIW,除非你想要一個「構建器」模式(比如StringBuilder),它不會返回任何東西,所以對於調用者來說顯而易見的是你要改變傳入的對象。就像Collections.shuffle一樣,你可以告訴它它會混亂你的ArrayList,因爲它不會返回任何東西。 –

+0

@TedBigham,這種方法肯定有一些設計問題,但它是完全分開的主題,至少需要幾個小時的學習。至於現在有一個簡單的注意力不集中。 – mdolbin

1

你需要指定方法的返回類型,像這樣:

public static ArrayList<Integer> getDeck(ArrayList<Integer> cards) { 
    //your code 
} 
1

你忘了包括返回類型。該方法的簽名應該這樣寫:

public static List<Integer> getDeck(List<Integer> cards) 

我會建議使用的接口類型,在這種情況下List<Integer>類型,而不是實施者型ArrayList<Integer>,這樣,你就可以返回所有類型的列表的實現者(如鏈表,ArrayList等)。這是一個名爲program to interfaces的概念。

+1

+1用於編程接口。這也適用於方法參數,你可以相應地更新這個'List '。 – Marco13

0

接口編程:

public static List<Integer> getDeck(List<Integer> cards) { 
    for (int total = 1; total !=5; total++) { 
     for (int suit = 1; suit != 14; suit++) { 
      cards.add(suit); 
     } 
    } 
    Collections.shuffle(cards); // Randomize the list 
    return cards; 
} 

public static void main(String[] args) { 
    // Create the cards here. 
    List<Integer> cards = new ArrayList<>(); 
    cards = getDeck(cards); 
}