2016-04-05 11 views
1

Aldım Yeni bir Kart Nesnesi dizisi yaratan, bunları karıştırır ve Yazdırır bir program oluşturduk. Ama şu hataları alıyorum ve bir öğrenci olarak, nedenini anlamakta zorlanıyorum.Kayıt Dışı Bir Sınıf İçin Derleyici Hataları ve Daha Sonra Bir Kopyalama Sınıfı

Hatalar: Sınıf olarak bildirilmemiş geliyor neden şimdiye kadar olduğu gibi

"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();"

i sıkışmış değil eminim. Dosya ismini netbeans olarak değiştirirsem hala yinelenen bir sınıf bulunduğunu belirten bir hata alıyorum. Lütfen yardım et.

, çok teşekkür ederim - Sinerji

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; 
        } 
       } 
      } 

cevap

0

hata iletileri her şeyi anlatıyor:

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

Seçeneklerin bunlar:

  • Taşı bu sınıfların her ikisi için hata mesajlarında önerildiği gibi kendi dosyaları.
  • Sınıf bildirimlerinden public değiştiricisini kaldırın.

7.6. Top Level Type Declarations Java Dil Şartnamede ilgili bölüme bakın:

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

Çok teşekkür ederim! Sorunu bana açık bir cevapla çok daha açık bir şekilde yaptın, kodum şimdi çalışıyor. Yardımın için minnettarım! – Synergy76

İlgili konular