Java 无法将卡解析为变量
我在做一个私人项目。这将是一个纸牌游戏,你可以比较,例如口袋妖怪。不幸的是,我遇到了一个错误,我无法找出它的原因。我将感谢任何帮助 好的,我有一个带有构造函数的card类(我省略了不必要的属性)Java 无法将卡解析为变量,java,Java,我在做一个私人项目。这将是一个纸牌游戏,你可以比较,例如口袋妖怪。不幸的是,我遇到了一个错误,我无法找出它的原因。我将感谢任何帮助 好的,我有一个带有构造函数的card类(我省略了不必要的属性) public class Card { String name; String cardID; int strFire; int strEarth; public Card(String n, String id, int fire, int earth)
public class Card
{
String name;
String cardID;
int strFire;
int strEarth;
public Card(String n, String id, int fire, int earth)
{
name = n;
cardID = id;
strFire = fire;
strEarth = earth;
}
}
然后我得到了Deck类,它应该创建所有卡片的实例
public class Deck
{
static void createDeck()
{
Card hoax06 = new Card("Nirwadas the Traveler", "hoax06", 3, 2);
System.out.println(hoax06.name); // this works
}
}
最后,我有一个游戏类,它包含了main
public class Game
{
public static void main(String[] args)
{
Deck.createDeck();
System.out.println(hoax06.name); // hoax06 cannot be resolved to a variable
}
}
我知道答案可能很简单,但java的访问系统仍然让我感到困惑。我也浏览过论坛上类似的错误,但无法将它们应用到我的案例中。我应该如何从main中引用卡片?您从未制作过
hoax06
。这就是错误发生的原因
Deck.createDeck();
System.out.println(hoax06.name);
以下是一些选项:
createDeck()
返回卡Deck
中制作一张静态卡
,这样您就可以使用Deck.hoax06.name
您从未做过
hoax06
。这就是错误发生的原因
Deck.createDeck();
System.out.println(hoax06.name);
以下是一些选项:
createDeck()
返回卡Deck
中制作一张静态卡
,这样您就可以使用Deck.hoax06.name
卡片实例是在甲板类中创建的,因此游戏类不直接知道它。另外,只要createDeck()方法结束,您就失去了对卡片的引用,实例也就消失了 下面是一个简单的例子:
public class Deck
{
public Card hoax06;
static Deck createDeck()
{
Deck deck = new Deck();
deck.hoax06 = new Card("Nirwadas the Traveler", "hoax06", 3, 2);
return deck;
}
}
public class Game
{
public static void main(String[] args)
{
Deck deck = Deck.createDeck();
System.out.println(deck.hoax06.name); // this is where the error occurs
}
}
卡片实例是在甲板类中创建的,因此游戏类不直接知道它。另外,只要createDeck()方法结束,您就失去了对卡片的引用,实例也就消失了 下面是一个简单的例子:
public class Deck
{
public Card hoax06;
static Deck createDeck()
{
Deck deck = new Deck();
deck.hoax06 = new Card("Nirwadas the Traveler", "hoax06", 3, 2);
return deck;
}
}
public class Game
{
public static void main(String[] args)
{
Deck deck = Deck.createDeck();
System.out.println(deck.hoax06.name); // this is where the error occurs
}
}
试试这个:
public class Deck
{
static Card createDeck()
{
Card hoax06 = new Card("Nirwadas the Traveler", "hoax06", 3, 2);
System.out.println(hoax06.name); // this works
return hoax06; //return the object
}
}
public class Game
{
public static void main(String[] args)
{
Card c=Deck.createDeck(); //get the object
System.out.println(c.name); // use it here
}
}
试试这个:
public class Deck
{
static Card createDeck()
{
Card hoax06 = new Card("Nirwadas the Traveler", "hoax06", 3, 2);
System.out.println(hoax06.name); // this works
return hoax06; //return the object
}
}
public class Game
{
public static void main(String[] args)
{
Card c=Deck.createDeck(); //get the object
System.out.println(c.name); // use it here
}
}
您可以创建一个枚举(可能称为卡片),列出您的所有卡片,然后使用Cards.HOAX06.name从游戏类内部(或任何其他地方)访问它们
例如,类似这样的事情:
enum Cards {
HOAX06("Nirwadas the Traveler", 3, 2),
HOAX07("Something else", 5, 2)
//list all your cards here in the same way
;
String name;
int strFire;
int strEarth;
Cards(String name, int fire, int earth){
this.name = name;
this.strFire = fire;
this.strEarth = earth;
}
}
然后从另一个类调用它:
public static void main(String[] args) {
System.out.println(Cards.HOAX06.name);
System.out.println(Cards.HOAX07.strEarth);
System.out.println(Cards.HOAX06.strFire);
}
所有枚举都是静态的和最终的。默认情况下,一旦创建了值,您就无法更改这些值,但我猜对于一副牌,您可能不想更改它们。您可以创建一个枚举(可能称为牌),列出您的所有牌,然后使用cards.HOAX06.name从游戏类内部(或任何其他地方)访问它们
例如,类似这样的事情:
enum Cards {
HOAX06("Nirwadas the Traveler", 3, 2),
HOAX07("Something else", 5, 2)
//list all your cards here in the same way
;
String name;
int strFire;
int strEarth;
Cards(String name, int fire, int earth){
this.name = name;
this.strFire = fire;
this.strEarth = earth;
}
}
然后从另一个类调用它:
public static void main(String[] args) {
System.out.println(Cards.HOAX06.name);
System.out.println(Cards.HOAX07.strEarth);
System.out.println(Cards.HOAX06.strFire);
}
所有枚举都是静态的和最终的。默认情况下,一旦创建了值,就无法更改它们,但是我猜,对于一副牌,你可能不想..
一个错误
如果你不告诉我们什么错误,你希望我们如何帮助你?@doorknold:标题说:无法解析为变量
很明显你有错误,因为你在牌堆类中创建了hoax06,并在游戏类中访问它!!!你从哪里得到错误?@duffy356:是他写的//这就是错误发生的地方
一个错误
如果你不告诉我们什么错误,你希望我们如何帮助?@Doorknob:标题说:无法解析为变量
很明显你有错误,因为你正在甲板类中创建hoax06,并在游戏类中访问它!!!你从哪里得到错误?@duffy356:是他写的//这就是错误发生的地方
虽然这毫无疑问是可行的,但如果有人希望createDeck()函数总是返回一张且仅返回一张卡,我会感到惊讶。。这不会非常有用。这是OP实现而不是我的。虽然这无疑会起作用,但如果有人希望createDeck()函数总是返回一张且仅返回一张卡,我会感到惊讶。。不会太有用的。这是OP实现,不是我的。谢谢!我想我现在明白了。我没有制作一个实际的甲板实例,所以尽管它是静态的,但卡没有存储在任何地方。这应该行得通。再次感谢!非常感谢。我想我现在明白了。我没有制作一个实际的甲板实例,所以尽管它是静态的,但卡没有存储在任何地方。这应该行得通。再次感谢!