如何获取Object的值

问题描述 投票:0回答:1

它尝试打印对象的值 [[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]);

}
java arrays object methods arguments
1个回答
0
投票

您需要确保 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
}
© www.soinside.com 2019 - 2024. All rights reserved.