我在我的代码中使用了JOptionPane,我有这个块:
Object[] move = { "Up", "Down" };
Object moveValue = JOptionPane.showInputDialog(null,
"Where do you want to move?", "Input",
JOptionPane.INFORMATION_MESSAGE, null, move,
move[0]);
我多次使用上面这个块,我在想,有没有办法给出
Object[] move;
新价值观。当我尝试它时
Object[] move = { "Up", "Down", "Left" };
它说"Duplicate local variable move"
当我尝试
move = { "Up", "Down", "Left" };
它提供错误"Array constants can only be used in initializers"
。
那么有没有办法让我多次使用变量“move”?
编辑:
代码的大部分是
while (true) {
switch(hero.getPos()) {
case 1:
Object[] move = { "Up", "Down" };
Object moveValue = JOptionPane.showInputDialog(null,
"Where do you want to move?", "Input",
JOptionPane.INFORMATION_MESSAGE, null, move,
move[0]);
move = null;
switch ((String) moveValue) {
case "Üles":
hero.setPos(hero.getPos() + 1);
break;
case "Paremale":
hero.setPos(hero.getPos() + 5);
break;
}
break;
case 2:
System.out.println("Draakon!!!!");
dragon = new Dragon(1);
fight = new Fight(hero, dragon);
break;
case 3:
System.out.println("hallo!");
move = { "Up", "Right", "Left" };
所以我在第4行和最后一行定义了“move”。最后一个给出错误。
答案 0 :(得分:2)
试试这个
Object[] move = { "Up", "Down" };
...
move = new Object[]{ "Up", "Down", "Left" };
答案 1 :(得分:1)
尝试使用LinkedList而不是array
看到这种方法:
LinkedList<Object> link = new LinkedList<Object>();//needs java.util.*; as import
link.add("Left");
link.add("right");
Object moveValue = JOptionPane.showInputDialog(null,
"Where do you want to move?", "Input",
JOptionPane.INFORMATION_MESSAGE, null, link.toArray(),
link.get(0).toString());
System.out.println(moveValue);
link.add("Down");
moveValue = JOptionPane.showInputDialog(null,
"Where do you want to move?", "Input",
JOptionPane.INFORMATION_MESSAGE, null, link.toArray(),
link.get(0).toString());
答案 2 :(得分:0)
您可以为每个move[]
变量提供更详细和唯一名称。您还可以仔细使用空白代码块来提供更小的范围:
{
Object[] move = {...};
...
}
...
{
Object[] move = {...};
...
}
答案 3 :(得分:0)
好吧,你的问题可以引用java数组初始化。当您编写类似Object[] move = { "Up", "Down" };
的代码时,您应该静态初始化数组。因此,如果您再次尝试move = { "Up", "Down", "Left" };
,则意味着您将再次初始化阵列,这是非法的。所以你会收到一条错误信息。如果要创建对多次使用的对象数组的引用,可以编写类似Object[] move=new Object[count]
的代码,并且必须给出不可变数组的长度...如果要更改一个元素它,通过使用索引或您编写另一个代码,如上所述,并将其设置为引用。比如Object[] move2=new Object[count];move=move2;
。
答案 4 :(得分:0)
您应该使用列表,例如ArrayList。
Object[] move = { "Up", "Down" };
ArrayList<Object> list = new ArrayList<>();
for(Object o : move) list.add(o);
// When you need it
list.add("Left");
// To use it with JOptionPane
Object[] finalMoves = list.toArray();
答案 5 :(得分:-1)
试试这种方式
Object[] move = { "Up", "Down" };
.... some code
move = { "Up", "Down", "Left" };