找不到主要课程

时间:2013-07-26 00:50:29

标签: java main

这个java代码应该可以工作,但它会出错:

no main classes found. 

我知道没有专门的“公共静态无效主”课程,但我不需要一个,对吗?我正在使用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());
    }
  }
}

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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());
}

答案 2 :(得分:0)

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