我正在上 Java 課,老師對我的問題沒有太大幫助。任務是使用以下測驗器類創建一手牌:
public class Tester
{
public static void main(String[] args)
{
// No pair
System.out.println("No pair");
Hand noPair1 = new Hand(new Card(10, 3), new Card(3, 0), new Card(13, 2), new Card(5, 1), new Card(14, 3));
System.out.println("\n");
}
}
有 Hand 類和 Card 類:
public class Hand
{
private ArrayList<Card> cards;
public Hand()
{
cards = new ArrayList<Card>(); // initialize cards
}
}
卡類:
public class Card
{
// instance variables
private final int rank; // card rank
private final int suit; // card suit
public Card(int rankIn, int suitIn)
{
rank = rankIn;
suit = suitIn;
}
我的問題:如何讓 Hand 類從 Hand 類中呼叫 Card 類?錯誤發生在 Hand noPair1 = new Hand(new Card(10,3), ...);
我不允許更改 Tester 類。
嘗試編譯和運行 Tester 類。
uj5u.com熱心網友回復:
當您呼叫時,new Hand(...)您正在呼叫該類的建構式Hand。從外觀上看,hand 的唯一建構式是零引數建構式。即,這個:
public Hand()
{
cards = new ArrayList<Card>(); // initialize cards
}
Hand 沒有建構式可以接收多張卡片
Hand noPair1 = new Hand(new Card(10,3), ...)
將有必要。
你有幾個選擇:
向 Hand 添加一個新的建構式,它接受一個
Card(或使用varargs, multipleCards)。這將使上述代碼段有效。Hand公開's欄位,使用現有的零引數建構式cards創建一個Hand實體,然后cards在創建手牌后將卡片添加到欄位中。
這兩者都有其優點和缺點,當然還有更多的方法可以解決這個問題——但這兩種可能是最簡單的。如果您無法編輯測驗檔案,第一個 withvarargs似乎是您唯一的選擇。
uj5u.com熱心網友回復:
public Hand()
{
cards = new ArrayList<Card>(); // initialize cards
}
你只有一個建構式Hand,但它不是一個接受Cards 的建構式。
您將需要添加一個建構式或方法,以Hand接受一些Cards。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/524129.html
標籤:爪哇班级目的
上一篇:不能對物件串列使用add()方法
