2013-07-26 39 views
-1

這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()); 
    } 
    } 
} 
+2

不工作怎麼樣?主要方法是應用程序的入口點。你不需要編譯代碼,但要開始執行,你需要一個。 – Corbin

+0

所有的Java應用程序必須要從命令行調用的'公共靜態無效main'方法。例如,要在命令行上說'java Foo',類'Foo'需要一個主要方法。如果你不使用命令行,這不適用; Bar'將會編譯並且可以運行*,如果被其他類調用*,即使沒有主要方法。 – MathSquared

+0

你在哪裏定義了代碼中的'main()'方法? – Lion

回答

2

經過一番檢查似乎要運行在DeckOfCards()構造函數的代碼。

粘在下面的代碼,它會按預期運行:

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

作爲一個側面說明,你不應該在你的構造做有副作用的東西。我想取出下面的代碼,並將其放置在主方法(創建合適的存取方法後):

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

您將需要main來運行此代碼。這將編譯,但您將無法運行它,直到你添加一個main因爲JVM將不知道從哪裏「開始」運行代碼。

0

不管你使用什麼NetBeans IDE中或Eclipse IDE中,你必須知道,所有的Java應用程序的需求main()來運行。有時你可能找不到主要的東西,就像你說的Netbeans。可能你使用了一些隱藏main()的框架。