我试图打印我的数组甲板,当我使用这个printf
给出如下信息:"jamilzin.cassino.Deck@28a418fc">
然而,当我试图在Deck类中创建一个方法菲律宾时,
我的printf返回消息如下:"jamilzin.cassino.Card@63a418fc">
如何使用正确的类型转换来使用getValue和getSuit打印我的数组?
我的想法:创建一个对象Deck(),因为Deck是一个数组的卡,我想cast的东西像一个MyDeck(Card. getvalue),但idk如何做到这一点
package jamilzin.cassino;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
Deck class:
public class Deck {
private Card[] deck;
private String[] suits = {"Ouro", "Paus", "Espada", "Copas"};
private Random gerador = new Random();
public Deck(){
deck = new Card[52];
int k = 0;
for(int j = 0; j< suits.length;j++){
for(int i = 0;i< 13;i++){
deck[k] = new Card((i+1),suits[j]);
k++;
}
}
}}
--------------------------------
Card class:
package jamilzin.cassino;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
public class Card {
private String suit;
private int value;
Card(int value, String suit){
this.value = 0;
this.suit = " ";
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
----------------------------------
Test class:
public class Cassino {
public static void main(String[] args) {
Deck deckMaster = new Deck();
System.out.println(""+ deckMaster);
}}
您的解决方案很接近。当您调用System.out.println("" + deckMaster)
时,Deck
没有定义它应该如何打印自己。您可以通过向Deck
类添加这样的内容来修复此问题:
@Override
public String toString() {
return Arrays.toString(deck);
}
从那里,它将打印每个Card
,但它们也不知道如何打印自己,所以您可以尝试将这样的东西添加到Card
类:
@Override
public String toString() {
return getValue() + getSuit();
}
另外,Card
的构造函数忽略了所有输入参数,这可能不是您想要的。所以修改这个:
Card(int value, String suit) {
this.value = 0;
this.suit = " ";
}
:
Card(int value, String suit) {
this.value = value;
this.suit = suit;
}