Java打印错误toString()赢得';t打印

Java打印错误toString()赢得';t打印,java,Java,我创建了一个类卡来模拟一张普通的扑克牌。在这个类中,我们将创建一个toString()方法来返回卡片的字符串表示形式。我们还必须创建另一个名为CardTestDriver的类来打印特定的卡。我已经为这些类编写了代码,但是当我运行它时,没有打印任何内容。我不确定哪里出了问题,如果有人能看到错误在哪里,那会有帮助吗?一切都在编译,但不是打印。这也是我第一次使用枚举类型,所以可能我做错了什么?非常感谢您的帮助 这是我的卡片课: public class Card{ public enum Su

我创建了一个类卡来模拟一张普通的扑克牌。在这个类中,我们将创建一个toString()方法来返回卡片的字符串表示形式。我们还必须创建另一个名为CardTestDriver的类来打印特定的卡。我已经为这些类编写了代码,但是当我运行它时,没有打印任何内容。我不确定哪里出了问题,如果有人能看到错误在哪里,那会有帮助吗?一切都在编译,但不是打印。这也是我第一次使用枚举类型,所以可能我做错了什么?非常感谢您的帮助

这是我的卡片课:

public class Card{

   public enum Suit { 
    CLUBS, DIAMONDS, HEARTS, SPADES; 
   }

   public enum Rank { 
       ACE, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, 
                   NINE, TEN, JACK, QUEEN, KING
   }
   public enum Status {
    FACEUP, FACEDOWN
   }

  final Rank rank;
  final Suit suit;
  final Status status;

   public Card (final Rank rank, final Suit suit, final Status status) 
   {
    this.rank = rank;
    this.suit = suit;
    this.status = status;

   }

   public String toString()
   {
       return rank + " " + suit + " " + status;
   }

   }
这是我的CardTestDriver.java类

public class CardTestDriver{

    public void main(String[] args) { 

     new Card (Card.Rank.SEVEN,Card.Suit.SPADES,Card.Status.FACEDOWN);

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

您要调用卡的
toString
方法:

Card card = new Card (Card.Rank.SEVEN,Card.Suit.SPADES,Card.Status.FACEDOWN);
System.out.println(card.toString());

您要调用卡的
toString
方法:

Card card = new Card (Card.Rank.SEVEN,Card.Suit.SPADES,Card.Status.FACEDOWN);
System.out.println(card.toString());

您需要打印实际对象,类似于
System.out.println(新卡(Card.Rank.SEVEN,Card.Suit.SPADES,Card.Status.FACEDOWN))例如

public class CardTestDriver {

    public static void main(String[] args) {
        System.out.println(new Card(Card.Rank.SEVEN, Card.Suit.SPADES, Card.Status.FACEDOWN));
    }

    public static class Card {

        public enum Suit {
            CLUBS, DIAMONDS, HEARTS, SPADES;
        }

        public enum Rank {
            ACE, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
            NINE, TEN, JACK, QUEEN, KING
        }

        public enum Status {
            FACEUP, FACEDOWN
        }

        final Rank rank;
        final Suit suit;
        final Status status;

        public Card(final Rank rank, final Suit suit, final Status status) {
            this.rank = rank;
            this.suit = suit;
            this.status = status;

        }

        @Override
        public String toString() {
            return rank + " " + suit + " " + status;
        }

    }
}

这会将
SEVEN SPADES FACEDOWN
打印到控制台,很好

您需要打印实际对象,类似于
System.out.println(新卡(Card.Rank.SEVEN,Card.Suit.SPADES,Card.Status.FACEDOWN))例如

public class CardTestDriver {

    public static void main(String[] args) {
        System.out.println(new Card(Card.Rank.SEVEN, Card.Suit.SPADES, Card.Status.FACEDOWN));
    }

    public static class Card {

        public enum Suit {
            CLUBS, DIAMONDS, HEARTS, SPADES;
        }

        public enum Rank {
            ACE, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
            NINE, TEN, JACK, QUEEN, KING
        }

        public enum Status {
            FACEUP, FACEDOWN
        }

        final Rank rank;
        final Suit suit;
        final Status status;

        public Card(final Rank rank, final Suit suit, final Status status) {
            this.rank = rank;
            this.suit = suit;
            this.status = status;

        }

        @Override
        public String toString() {
            return rank + " " + suit + " " + status;
        }

    }
}

这会将
SEVEN SPADES FACEDOWN
打印到控制台,效果很好

尝试打印卡的实际实例,
System.out.println(新卡(卡.等级.SEVEN,卡.套装.SPADES,卡.状态.FACEDOWN))…我试过了,但没用-编译,但没有打印打印打印
SEVEN SPADES FACEDOWN
只为我打印fine@onay-可能问题在于主方法缺乏“静态”声明。你在主持这个班吗?如果是这样的话,必要的方法签名是
publicstaticvoidmain(String[]args)
。是的,我也尝试过,但同样的结果没有打印出来。打印卡片的实际实例,
System.out.println(新卡片(card.Rank.SEVEN,card.Suit.SPADES,card.Status.FACEDOWN))…我试过了,但没用-编译,但没有打印打印打印
SEVEN SPADES FACEDOWN
只为我打印fine@onay-可能问题在于主方法缺乏“静态”声明。你在主持这个班吗?如果是这样的话,必要的方法签名是
publicstaticvoidmain(String[]args)
。是的,我也尝试过,但同样的结果是,printedIt不是一个静态方法,因此您不能在没有实例的情况下从
对象调用
toString()
。而且,
CardTestDriver
从未被实例化。@ElliottFrisch True。回答得有点快:)@ElliottFrisch-你在这里发现了什么;Op没有从静态上下文调用toString();事实上,main方法根本不会被使用,是吗?它是一个静态方法,因此如果没有实例,就不能从
Object
调用
toString()
。而且,
CardTestDriver
从未被实例化。@ElliottFrisch True。回答得有点快:)@ElliottFrisch-你在这里发现了什么;Op没有从静态上下文调用toString();事实上,主要方法根本不会被使用,是吗?