Java 找不到主类

Java 找不到主类,java,main,Java,Main,此java代码应该可以工作,但它给出了一个错误: no main classes found. 我知道没有专门的“publicstaticvoidmain”类,但我这里不需要,对吗?我正在使用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(

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

no main classes found. 
我知道没有专门的“publicstaticvoidmain”类,但我这里不需要,对吗?我正在使用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());
    }
  }
}
公共枚举面
{
两(2),
三(3),
四(4),
五(5),
六(6),
七(7),
八(8),
九(9),
十(10),
杰克(11岁),
女王(12岁),
国王(13),
ACE(14);
私人价值;
私有面(int值)
{
this.cardValue=值;
}
public int getCardValue(){
返回值;
}
}
公开枚举诉讼
{
心,
黑桃,
俱乐部,
钻石;
}
公务舱卡
{
私人诉讼;
个人面值;
公共卡(面值卡、套装)
{
this.cardValue=cardValue;
这套衣服;
}
公诉状
{
反诉;
}
公开无效诉讼(诉讼)
{
这套衣服;
}
公共脸getCardValue()
{
返回值;
}
公共作废设置cardValue(票面cardValue)
{
this.cardValue=cardValue;
}
}
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Iterator;
公营甲板
{
私人露天甲板;
公共甲板
{
this.deck=新的ArrayList();

对于(int i=0;i您将需要一个
main
来运行此代码。它将编译,但在添加
main
之前您将无法运行它,因为JVM不知道从哪里“开始”运行您的代码。

经过一些检查后,您似乎希望在
DeckOfCards()
构造函数中运行代码

请输入以下代码,它将按预期运行:

public class DeckRunner {
    public static void main(String[] args) {
        new DeckOfCards();
    }
}
作为补充说明,您不应该在构造函数中进行带有副作用的操作。我将取出以下代码并将其放置在主方法中(在创建合适的访问器方法之后):

迭代器cardIterator=deck.Iterator(); while(cardIterator.hasNext()) { Card aCard=cardIterator.next(); System.out.println(aCard.getCardValue()+“+aCard.getSuit()”的“+”; }
无论您使用的是NetBeans IDE还是Eclipse IDE,您都必须知道所有java应用程序都需要main()才能运行。有时您可能找不到main,正如您所说的NetBeans。可能您使用了隐藏main()的某个框架.

如何工作?main方法是应用程序的入口点。编译代码不需要方法,但开始执行时需要方法。所有Java应用程序都必须有一个
public static void main
方法才能从命令行调用。例如,在命令行上说
Java Foo
,class
Foo
需要一个main方法。如果不使用命令行,则此方法不适用;类
Bar
将编译,并且在被其他类调用时可以运行,即使没有main方法。您在哪里定义了
main()
代码中的方法?您似乎对尝试执行的操作感到困惑。如果您尝试创建
playingcards.jar
库,您会很好,但如果您尝试按原样执行此代码,您会遇到麻烦。
Iterator<Card> cardIterator = deck.iterator();
while (cardIterator.hasNext())
{
  Card aCard = cardIterator.next();
  System.out.println(aCard.getCardValue() + " of " + aCard.getSuit());
}