我正在创建一个纸牌游戏,要求纸牌具有随机属性。所以我创建了一个卡片类:
public static class hero{
static String name;
static int strength;
static int intellect;
static int flight;
static int tech;
}
然后,用户输入纸牌数,并创建纸牌(对象)数组。
hero [] cards = new hero[cardNumber];
for(int i=0;i<cardNumber;i++){ cards[i]=new hero();}
但是,当我尝试使用for循环为卡分配随机值时,每个卡的属性最终都具有相同的值,这是我使用的代码:
for(int i=0; i<cards.length; ++i)
{
cards[i].strength = rand.nextInt(25) + 1;
cards[i].intellect = rand.nextInt(25) + 1;
cards[i].flight = rand.nextInt(25) + 1;
cards[i].tech = rand.nextInt(25) + 1;
}
例如。
cards[1].flight
将返回7
cards[2].flight
将返回7
我很确定我错了,我们非常感谢您的帮助和指导
答案 0 :(得分:0)
在英雄类中声明变量时,尝试删除static
关键字。
因此,而不是
static String name;
...
static int flight;
做
String name;
...
int flight;
使它们static
可以使变量不是特定于类的单个实例,而是特定于整个类。可以在不实例化类对象的情况下调用静态变量。
例如,使用您当前的代码
hero.flight
还将返回7。通过删除static
标识符,您将可以使数组中每个对象都具有特定的每个变量。