2016-04-05 5 views
1

カードオブジェクトの配列を作成し、シャッフルしてプリントするプログラムを作成しました。しかし、私は次のエラーを受けているし、学生として、私はなぜ理解している問題を抱えている。宣言されていないクラスと重複しているクラスのコンパイラエラーの受信

エラー:クラスとして宣言されていない来ている理由を、これまでのよう

"HW6GetBig.java:23: error: class Card is public, should be declared in a file named Card.java public class Card {"

"HW6GetBig.java:39: error: class DeckOfCards is public, should be declared in a file named DeckOfCards.java public class DeckOfCards {"

"HW6GetBig.java:11: error: cannot find symbol DeckOfCards myDeckofCards = new DeckofCards();"

は、私は立ち往生していないことを確認しています。 netbeansでファイル名をCardに変更すると、重複したクラスが見つかったというエラーが表示されています。助けてください。

は 、どうもありがとうございました - シナジー

class HW6GetBig 
    { 
     public static void main(String[] args) 
     { 
      DeckOfCards myDeckofCards = new DeckofCards(); 
      myDeckofCards.deckShuffler(); // Randomizes/Shuffles the Cards in the Deck, using a Random # and Swaps 

      // Print 52 Cards in the Order in which they are dealt 
      for (int i = 0; i < 13; i++) { 
       // Deal and Print 4 Cards 
       System.out.printf("%-20s%-20s%-20s%-20s\n", 
       myDeckofCards.dealCard(), myDeckofCards.dealCard(), 
       myDeckofCards.dealCard(), myDeckofCards.dealCard()); 
      } 
     } 
    } 
    public class Card { 
     //Card Class represents a Virtual Playing Card in our Deck 
     private String rank; // Ranks Of Card 
     private String suit; // Suit Of Card 

     // Two Argument Constructor initializes card's face and suit 
     public Card(String cardRank, String cardSuit) { 
      rank = cardRank; // Intializing Values of Card's Rank 
      suit = cardSuit; // Intializing Values of Card's Suit 
     } 
     // Return String representing the Card 
     public String CardToString() { 
      return rank + " of " + suit; 
     } 

    } 
    public class DeckOfCards { 
     private Card deck[]; //Declaration of Array of Card Objects 
     private int topCard; //Card to be Dealt 
     private final int NUM_CARDS = 52; // Constant # Of Cards in a Standard Deck 
     int random = (int)(Math.random()*52+1); 

     public DeckOfCards() { 
      String ranks[] = {"Ace","Two","Three","Four","Five","Six","Seven", 
      "Eight","Nine","Ten","Jack","Queen","King"}; 
      String suits[] = {"Spades","Hearts","Clubs","Diamonds"}; 

      deck = new Card[NUM_CARDS]; // Creating an Array of Card Objects 
      topCard = 0; // Setting Current Card so 1st Card is deck[0] 
      // Filling the Seats of our Empty Deck Room with Card Objects 
      for (int i = 0; i < deck.length; i++) { 
       deck[i] = new Card(ranks[i % 13], suits[i/13]); 
       // End of Deck Of Cards Constructor 
      } 
     } 
      public void deckShuffler() { 
       // After Shuffling, The Deck should begin at deck[0] once again 
       topCard = 0; 
       // For each Card, pick a "Random Card/#" and Swap. 
       for(int i = 0; i < deck.length; i++) { 
        // Obtaining a Random # Between 0 and 51. 
        int j = random; 
        // Swapping Currently Selected Card (i) with Random Card (j) 
        Card tempObject = deck[i]; 
        deck[i] = deck[j]; 
        deck[j] = tempObject; 
       } 
      } 
       public Card dealCard() { 
        // Ensure the Top Card does not exceed the Deck Length 
        if (topCard < deck.length) { 
        return deck[topCard++]; 
        } else { 
        return null; 
        } 
       } 
      } 

答えて

0

エラーメッセージはそれをすべて言う:

class Card is public, should be declared in a file named Card.java
class DeckOfCards is public, should be declared in a file named DeckOfCards.java

これらはあなたのオプションは以下のとおりです。

  • 移動し、これらのクラスの両方にエラーメッセージに示唆されているように、独自のファイルです。
  • public修飾子をクラス宣言から削除します。

は、Java言語仕様、7.6. Top Level Type Declarationsの関連するセクションを参照してください。

If and only if packages are stored in a file system (§7.2), the host system may choose to enforce the restriction that it is a compile-time error if a type is not found in a file under a name composed of the type name plus an extension (such as .java or .jav) if either of the following is true:

  • The type is referred to by code in other compilation units of the package in which the type is declared.

  • The type is declared public (and therefore is potentially accessible from code in other packages).

+0

ありがとうございました!あなたは問題を私にはっきりと答えました。私のコードは今働いています。本当に助けに感謝! – Synergy76

関連する問題