【发布时间】:2015-09-27 05:02:13
【问题描述】:
首先——要明确一点——这是是的家庭作业,我只是想学习如何正确地做到这一点(我不想要答案,只是指导)。我在这个网站和整个 Google 上进行了一些搜索,但似乎找不到解决方案。
无论如何:
在我的主类中,我创建了一个试图传递给方法的 ArrayList。出于某种原因,我无法将 ArrayList 作为参数传递,即使该方法设置为接收一个。我遇到了错误:“类中的构造函数不能应用于给定类型。”
可能我犯了一个简单的错误——谁能帮我理解这里发生了什么?
public static void main(String[] args)
{
Deck cards = new Deck();
ArrayList<String> deck = new ArrayList();
deck = cards.CreateDeck();
Hand myHand = new Hand(deck); //here is the error
}
那么……
public class Hand {
public static ArrayList<String> Hand (ArrayList<String> deck)
{
ArrayList<String> yourHand = new ArrayList<String>(deck);
for (int i = 5; i < yourHand.size(); i++) {
yourHand.remove(i);
}
return yourHand;
}
}
【问题讨论】:
-
我没有看到你在任何地方调用
Hand(ArrayList<String>)方法。 -
正确的格式是
Hand myHand = Hand.Hand(deck);。如果你想让它成为一个构造函数,那么你的 Hand 类应该有这个public Hand (ArrayList<String> deck){...} -
或者更确切地说是
ArrayList<String> myHand = Hand.Hand(deck); -
我认为您的意图是在构造函数中传递卡片组,但构造函数不能有返回值。
-
您已使用
Hand作为您的方法的名称。 Java 命名标准使用小写字母作为方法名称的第一个字符,即hand。考虑遵循本指南 - 即public static List<String> hand (List<String> deck)- 其他人会更容易理解您的代码。另外,请注意使用List作为类型,而不是ArrayList- 请参阅Liskov substitution principle
标签: java methods arraylist constructor