如何从对象打印不同的原始值

时间:2016-02-09 20:53:54

标签: java tostring

import java.util.ArrayList;

public class Card {

  int number;
  String suit;

  public Card(int number, String suit) {
    this.number = number;
    this.suit = suit;
  }

  public static void main(String[] args) {

    String[] suit = {
      "Clubs",
      "Diamonds",
      "Spades",
      "Hearts"
    };

    String[] high = {
      "Jack",
      "Queen",
      "King"
    };

    ArrayList<Card> deckOfCards = new ArrayList<Card>(52);

    for (int j = 0; j < 4; j++) {
      for (int i = 0; i < 13; i++) {

        deckOfCards.add(new Card (i+1, suit[j]));
      }
    }



    @Override
    public String toString(Card card) {

      this.suit = suit;
      this.number = number;

      String type;

      if (number < 10) {
        type = Integer.toString(number);
      }
      else {
        type = high[i-number];
      }

      return suit + " of " + type;
      }

  }
}

所以我有一个名为card的对象,我想用底部的方法打印套装(字符串)和它上面的数字(int),但我不是百分之百确定如何做到这一点。不用说,底部的部分不编译或工作

由于

2 个答案:

答案 0 :(得分:1)

这应该进入你的Card类:

@Override
public String toString() {
    return String.valueOf(this.number) + " of " + this.suit;
}

像这样调用函数:

currentCard.toString();

或将其打印到控制台,如下所示:

System.out.println(currentCard.toString());

答案 1 :(得分:0)

toString方法不接受任何参数,应该在您的卡片对象中。它是对象的字符串表示。这些值由构造函数设置。

将套装和高数组放在顶部的卡片类中,使用其他变量,因此您的代码如下所示:

  int number;
  String cardSuit; //renamed this variable because you have an array with the same name  
  String[] suit = {
      "Clubs",
      "Diamonds",
      "Spades",
      "Hearts"
    };

    String[] high = {
      "Jack",
      "Queen",
      "King"
    };

@Override
public String toString()
{
      String type;

      if (number < 10) {
        type = Integer.toString(number);
      }
      else {
        type = high[i-number];
      }
      return "Suit " + this.suit + " and Number " + this.type;
}

备注:将变量设为私有并使用getter / setter设置和访问它们是一个好主意。此外,覆盖等于。如果您正在使用eclipse,它可以自动为您生成。