gpt4 book ai didi

java - 收到未声明类和重复类的编译器错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:03 25 4
gpt4 key购买 nike

我刚刚创建了一个程序,它创建一个卡片对象数组,对它们进行洗牌,然后打印它们。但我遇到了以下错误,作为一名学生,我很难理解为什么。

错误:

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

最佳答案

错误消息说明了一切:

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).

关于java - 收到未声明类和重复类的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com