我正在用Java开始我的第一场比赛。我刚开始编程所以请不要判断!
我在main方法的开头设置了一个数组,创建了6个项目。
Item item[] = new Item[6]
然而,我现在已经决定要添加更多游戏模式 - 简单,中等和疯狂。 Easy将有6件商品, 中等有10, 疯了20岁。
这是代码的骨架。
boolean easy, medium, hard;
int itemnumber
Item item[] = new Item[itemnumber]
public void start(){
if(easy){
itemnumber = 6
}else if(medium){
itemnumber = 10
}else if(insane){
itemnumber = 20
}
for (int i = 0; i < item.length; i++) {
item[i] = new SpotPlus(getWidth() + 500 * i);
}
}
public void paint(Graphics G)
for (int i = 0; i < item.length; i++) {
item[i].paint(g);
}
}
我认为问题是变量itemnumber只在数组设置后才更改。但是如果我把数组放在if / else之后,方法paint就能够“看到”数组。
任何人都可以想到解决这个问题的方法吗? 谢谢堆!
如果您需要更多信息,请不要犹豫!
答案 0 :(得分:3)
将您的开始方法更改为
Item item[];
public void start(){
if(easy){
itemnumber = 6
}else if(medium){
itemnumber = 10
}else if(insane){
itemnumber = 20
}
item = new Item[itemnumber];
for (int i = 0; i < item.length; i++) {
item[i] = new SpotPlus(getWidth() + 500 * i);
}
}
将数组声明在顶部,并在分配itemnumber后初始化它。
答案 1 :(得分:1)
尝试使用java.util.ArrayList。您将能够拥有动态大小的阵列。
或者,在start中重新创建数组。
答案 2 :(得分:0)
只需在顶部声明变量,然后在start()
方法中初始化它:
boolean easy, medium, hard;
int itemnumber;
Item[] item; //declaration only
public void start(){
if(easy){
itemnumber = 6;
}else if(medium){
itemnumber = 10;
}else if(insane){
itemnumber = 20;
}
item = new Item[itemnumber]; //initialize array
for (int i = 0; i < item.length; i++) {
item[i] = new SpotPlus(getWidth() + 500 * i);
}
}
public void paint(Graphics G)
for (int i = 0; i < item.length; i++) {
item[i].paint(g);
}
}
答案 3 :(得分:0)
首先,你在第3行(Item item[] = new Item[itemnumber]
),6(itemnumber = 6
),8(itemnumber = 10
)和10(itemnumber = 20
)的末尾忘记了分号,你忘记了方法paint
中的一个大括号(它应该是public void paint(Graphics G) {
。要解决数组问题,你可以这样做:
boolean easy, medium, hard;
int itemnumber;
Item item[];
public void start(){
if(easy){
itemnumber = 6;
}else if(medium){
itemnumber = 10;
}else if(insane){
itemnumber = 20;
}
item[] = new Item[itemnumber];
for (int i = 0; i < item.length; i++) {
item[i] = new SpotPlus(getWidth() + 500 * i);
}
}
public void paint(Graphics G) {
for (int i = 0; i < item.length; i++) {
item[i].paint(g);
}
}