【发布时间】:2014-04-23 12:49:29
【问题描述】:
我正在制作一个使用 ArrayList 作为卡片组的小卡片组程序。对我设置的限制之一是我“发”牌的方法必须是 Arraylist 类型。我遇到的问题是我不知道如何从 ArrayList 中只返回一个特定的索引值。见下文。
public ArrayList deal(int n, boolean up){
Card card0 = new Card();
boolean cardFace = card0.state(up);
return al.get(0); //<-- This doesn't work, Netbeans says that it is a string type
//not an ArrayList type. The only thing it will actually
//allow me to return is:
return.al; // But this doesn't work, I don't need to return the whole list,
// just the first element, but Netbeans calls that a String type, not
// ArrayList
那么我怎样才能返回 List 的第一项并且仍然是正确的类型呢?其余代码无关紧要,只需要 Method 类型和 return 语句。
编辑:根据要求
package deckofcards;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Deck{
ArrayList<String> al = new ArrayList<>();
public void shuffle(){
Collections.shuffle(al);
}
public String displayDeck(){
String returnDeck = "";
for(int i = 0; i < al.size(); i++){
String printDeck = al.get(i);
returnDeck += printDeck;
}
return returnDeck;
}
public ArrayList deal(int n, boolean up){
Card card0 = new Card();
boolean cardFace = card0.state(up);
return al.get(0);
}
public void populate(){
al.add(0, "Ace of Spades");
al.add(1, "Two of Spades");
al.add(2, "Three of Spades");
//yadaa yadaa
【问题讨论】:
-
请向我们展示您的
al声明。这是什么? -
我认为您误解了问题陈述或要求。如果您必须返回
ArrayList,那么您必须将结果 放入ArrayList并返回。此外,您不应该使用不合格的(即原始)泛型类型。这是一个ArrayList<Someclass>,它有助于了解Someclass应该是什么。您确实没有提供足够的信息。 -
限制从何而来?如果您(在任何情况下)总是需要只返回一个元素,那么返回类型真的不应该是
ArrayList。这种情况可能暗示你误解了你的任务(家庭作业?)。 -
deal(int n, boolean up)这个方法签名看起来你应该返回一个n卡片的 ArrayList。我认为你需要重新阅读你的作业。 -
这个限制确实是导师规定的。这是我对问题的解释。本质上,我必须(在另一个类文件中)调用 deal 方法,该方法将显示列表中的
n元素,然后删除它们。所以在测试类文件中,我执行deck0.deal(int n, boolean up),然后必须打印出n卡片,声明它们是朝上还是朝下,然后从列表中删除这些元素。我不知道如何在测试类结束时做到这一点,所以我想我必须在方法本身中做到这一点,如上所述。
标签: java methods arraylist return