它尝试打印对象的值 [[Ljava.lang.Object;@53d8d10a 我的问题是如何获取它的值并控制第一个字符是否以字符“#”开头。
我在方法decideWinner对象player1的声明中将对象作为参数传递
@Override
public void decideWinner(Object player1, Object player2) {
int sum1 = 0;
System.out.println("p1[i]" + player1);
for (int i = 0; i < 5; i++) {
player1=new Card();
if (player1.toString().substring(0, 1).startsWith("#")) {
sum1++;
System.out.println("confirm ths is inside to if block player1:" + player1 + "sum1:" + sum1);
}
}
public class Card extends Deck{
public String symbol;
public String number;
public Card() {
symbol = "$&#%";
number = "A 2 3 4 5 6 7 8 9 10 J Q K";
}
public Card(String symbol,String num){
super();
this.symbol=symbol;
this.number=num;
}
//getters
public String getSymbol(){
return symbol;
}
public String getNumber(){
return number;
}
//setters
public void setSymbol(String symbol){
this.symbol=symbol;
}
public void setNumber(String number){
this.number=number;
}
@Override
public String toString() {
return symbol + number ;
}
}
我的主要内容有这个: 公共静态无效主(字符串[] args){
HeartsDealer h1 = new HeartsDealer() {
};
Card card = new Card();
Deck deck = new Deck();
try {
h1.showDeck(deck.getTotalCards(), card.getSymbol(), card.getNumber());
} catch (NullPointerException e) {
System.out.print("NullPointerException Caught" + e);
}
Card card1 = h1.dealRandomCard(deck.getTotalCards());
System.out.println("Random card from deck:" + card1.getSymbol() + card1.getNumber());
Card player1 = new Card();
Card player2 = new Card();
Object[] p1p2 = h1.dealToPlayers(player1, player2, deck.getTotalCards());
System.out.println(Arrays.toString(p1p2));
//h1.decideWinner(player1, player2,deck.getTotalCards());
h1.decideWinner(p1p2[0], p1p2[1]);
}
您需要确保 Card 类的 toString() 方法返回适当的表示形式。
修改卡牌类:
public class Card extends Deck {
private String symbol;
private String number;
public Card() {
symbol = "$&#%";
number = "A 2 3 4 5 6 7 8 9 10 J Q K";
}
public Card(String symbol, String num) {
this.symbol = symbol;
this.number = num;
}
public String getSymbol() {
return symbol;
}
public String getNumber() {
return number;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public void setNumber(String number) {
this.number = number;
}
@Override
public String toString() {
return symbol + " " + number; // Add a space between symbol and number
}
}
现在,当您在 Card 对象上调用 toString() 时,它将返回一个字符串,符号和数字之间有一个空格。
接下来,修改decideWinner方法,将player1和player2对象正确转换为Card对象,然后检查符号的第一个字符是否以“#”开头:
@Override
public void decideWinner(Object player1, Object player2) {
int sum1 = 0;
if (player1 instanceof Card) {
Card card1 = (Card) player1;
System.out.println("Player 1: " + card1);
// Check if the symbol starts with "#"
if (card1.getSymbol().startsWith("#")) {
sum1++;
System.out.println("Player 1 has a symbol starting with '#'. Sum1: " + sum1);
}
}
// Repeat the same for player2 if needed
}