2013-07-26 5 views
-1

Этот Java код должен работать, но он выдает ошибку:Нет основных классов не найдено

no main classes found. 

Я знаю, что это не конкретно «государственной статической силы основных» класса, но я не нужен здесь, прямо ? Я использую среду IDE NetBeans.

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-приложения должны иметь метод 'public static void 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

Независимо от того, что вы использовали IDE NetBeans или Eclipse IDE, вы должны знать, что все потребности Java приложений main() для запуска. иногда вы не можете найти главное, как вы сказали Netbeans. вероятно, вы использовали некоторые рамки, которые скрывали main().

Смежные вопросы