-1

这个java代码应该可以工作,但它给出了一个错误:

no main classes found. 

我知道没有专门的“public static void main”类,但我这里不需要,对吧?我正在使用 NetBeans IDE。

public enum Face
{
  TWO(2),
  THREE(3),
  FOUR(4),
  FIVE(5),
  SIX(6),
  SEVEN(7),
  EIGHT(8),
  NINE(9),
  TEN(10),
  JACK(11),
  QUEEN(12),
  KING(13),
  ACE(14);

  private int cardValue;

  private Face (int value)
  {
    this.cardValue = value;
  }

  public int getCardValue() {
    return cardValue;
  }
}

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

public class Card
{
  private Suit suit;
  private Face cardValue;

  public Card (Face cardValue, Suit suit)
  {
    this.cardValue = cardValue;
    this.suit = suit;
  }

  public Suit getSuit()
  {
    return suit;
  }

  public void setSuit(Suit suit)
  {
    this.suit = suit;
  }

  public Face getCardValue()
  {
    return cardValue;
  }

  public void setCardValue(Face cardValue)
  {
    this.cardValue = cardValue;
  }
}

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; 

public class DeckofCards
{
  private ArrayList<Card> deck;

  public DeckofCards ()
  {
    this.deck = new ArrayList<>();
    for (int i=0; i<13; i++)
    {
      Face value = Face.values()[i];

      for (int j=0; j<4; j++)
      {
        Card card = new Card(value, Suit.values()[j]);
        this.deck.add(card);
      }
    } 

    Collections.shuffle(deck);

    Iterator<Card> cardIterator = deck.iterator();
    while (cardIterator.hasNext())
    {
      Card aCard = cardIterator.next();
      System.out.println(aCard.getCardValue() + " of " + aCard.getSuit());
    }
  }
}
4

3 回答 3

6

您将需要main运行此代码。它会编译,但在添加 a 之前您将无法运行它,main因为 JVM 不知道从哪里“开始”运行您的代码。

于 2013-07-26T00:53:19.887 回答
2

经过一番检查,您似乎想在DeckOfCards()构造函数中运行代码。

坚持以下代码,它将按预期运行:

public class DeckRunner {
    public static void main(String[] args) {
        new DeckOfCards();
    }
}

作为旁注,您不应该在构造函数中做有副作用的事情。我会取出以下代码并将其放在 main 方法中(在创建合适的访问器方法之后):

Iterator<Card> cardIterator = deck.iterator();
while (cardIterator.hasNext())
{
  Card aCard = cardIterator.next();
  System.out.println(aCard.getCardValue() + " of " + aCard.getSuit());
}
于 2013-07-26T00:58:30.920 回答
0

无论您使用的是 NetBeans IDE 还是 Eclipse IDE,您都必须知道所有 java 应用程序都需要 main() 才能运行。有时你可能找不到主要的,正如你所说的 Netbeans。可能您使用了一些隐藏 main() 的框架。

于 2013-07-26T00:58:32.860 回答