【问题标题】:Cannot find symbols/variables for Pack class, solution?找不到 Pack 类的符号/变量,解决方案?
【发布时间】:2015-02-21 20:08:52
【问题描述】:

这可能是一件非常简单的事情,它会让我完全恼火,但我承认我被卡住了。

我即将完成一项作业,但由于系统无法找到此类(称为 Pack 类)中的任何符号,我陷入了死胡同。我确实有一个单独的类叫做 PlayingCard 类,它非常完整,但我现在需要这个类和一个单独的测试人员来完成任务。

这是代码,然后我将解释我想用它做什么。

import java.util.Random;

public class Pack 
{
PlayingCard[] cards = new PlayingCard[52];

public Pack()
{
    // Setting up array
    String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"};
    String[] ranks = {"TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING", "ACE"};

    // Intialising array
    Pack()   // Error 1
    {    
        for (int i = 0; i < PlayingCard.length(); i++)  // Error 2
        {
            PlayingCard[i] = i;  // Error 3
        }
    }
}

public void shuffle()
{
    for (int i = 0; i < 52; i++)
    {
        Random random = new Random();
        int rand = random.nextInt(50)+1;
        PlayingCard[i] = rand;   // Error 3
    }
}

@Override
public String toString()
{

}
}

这很像纸牌游戏课程。我有一个名为 Pack 的方法,我需要在其中构建一个包含 52 张按不同花色和等级排序的卡片的 Pack。 shuffle 类是显而易见的,它需要能够对已构建的牌组进行洗牌。我已经为扑克牌制作了一组数组。虽然PlayingCard[] cards = new PlayingCard[52] 是专门插入到分配模板中的。

现在,问题是 NetBeans 系统无法找到 Pack、PlayingCard 和 length() 的符号,即使 PlayingCard 是同一包中的单独类的一部分,并且 Pack 已经是该类的一部分。

那么,我在这里做错了什么?

编辑: 我得到的错误是这样的:

cannot find symbol
symbol: method Pack()
location: class Pack

; expected

cannot find symbol
symbol: method length()
location: class PlayingCard()

cannot find symbol
location: variable PlayingCard
location: class Pack

这些将在上面的代码中按顺序表示为 1、2、3。

编辑 2: 代码顶部的 PlayingCard 可能是一个构造函数(我正在使用为赋值指定的模板来设置代码),请参阅新链接。

public class Pack 
{
PlayingCard[] cards;

public Pack()
{
    this.cards = new PlayingCard[52];
    // Setting up array
    String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"};
    String[] ranks = {"TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", 
        "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING", "ACE"};

    // Intialising array
    Pack()
    {    
        for (int i = 0; i < PlayingCard.length(); i++)
        {
            PlayingCard[i] = i;
        }
    }
}

我仍然收到第一个代码块中显示的错误。

【问题讨论】:

  • 如果 PlayingCard 是类型名称,则不能对其使用索引:PlayingCard[i]
  • 洗牌数组PlayingCards[] cards,即一副纸牌,不是通过将随机整数分配给扑克牌来完成的,因为扑克牌是扑克牌,整数是整数,所以无论如何都是不允许的。
  • 当您询问编译错误时,请务必发布准确完整的错误消息,并说明它指的是哪一行代码。
  • @laune 我可能看起来像个白痴,但我不认为我跟随,你是说我实际上不能使用 PlayingCard[] cards 并且需要设置不同的数组或根本不需要?另外,PlayingCard其实就是同一个包中的一个类的名字。
  • 我会发现错误信息挂了。

标签: java arrays oop shuffle


【解决方案1】:

我猜这些是错误:

Error3: PlayingCard 是类而不是数组。卡是数组,改变

/*change this PlayingCard[i] = i */  
/*to*/ cards[i] = i;

错误2:长度不是函数而是变量。

/*change this PlayingCard.length(); */  
    /*to*/ cards.length;

再次从卡片中获取长度(您的数组称为卡片,而不是 PlayingCard)

Error1:为什么你的函数里面有一个函数?你想在这里做什么?

试试这个代码:-

import java.util.Random;

public class Pack 
{
PlayingCard[] cards = new PlayingCard[52];

public Pack()
{
    // Setting up array
    String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"};
    String[] ranks = {"TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING", "ACE"};

    // Intialising array

        for (int i = 0; i < cards.length; i++) 
        {
            cards[i] = i;
        }   
}

public void shuffle()
{
    for (int i = 0; i < 52; i++)
    {
        Random random = new Random();
        int rand = random.nextInt(50)+1;
        cards[i] = rand;   // Error 3
    }
}

@Override
public String toString()
{

}
}

PS:您的代码中有几个问题。我建议您在这里学习一些教程 - http://codingbat.com/ 以很好地理解语言基础知识。

【讨论】:

  • 我已经完成了更改,但现在我遇到了卡片无法将 int 转换为 PlayingCard 的问题。如果您希望我添加它或者我缺少 Pack 类中的某些内容,这可能是与 PlayingCard 类有关的问题?
  • @SIHB007 在您的 Q 之后查看我的第二条评论。您尝试在 cards[i] 上放置一个 int(eger) 值,即 PlayingCard。这些类型不兼容,因此会出现错误(如果你在现实生活中这样做,它被称为“标记卡”,你会发生一些事情 - 这取决于你所在的公司。;-))
  • @laune 我可以理解,但它并没有完全解释我如何解决这个问题。我已将 PlayingCard 更改为 int 以便卡片可以使用,但 PlayingCard 已在模板中明确说明。无论如何要使用 PlayingCard 和 int 吗?像某种后门?
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多