将二维数组的索引添加到 Java 中的列表末尾
Add Index of 2-dimensional Array to to the end of List in Java
我正在开发一个小游戏,玩家点击一个按钮,其值来自二维数组。This is how the game looks如果玩家想要恢复他的动作,我想保存玩家的步骤接受了一个列表,当他单击 "revert" 按钮时,列表的最后一项被还原。问题是我不知道如何将二维数组的索引保存到列表中。
我的代码很远,下面是数组
for (int i = 0; i < buttons.length; i++) {
for (int j = 0; j < buttons[i].length; j++) {
counter++;
buttons[i][j] = new JButton("" + counter);
buttons[i][j].setBackground(Color.white);
buttons[i][j].addActionListener(new ButtonPress());
fenster.add(buttons[i][j]);
ActionListener 的代码在这里:
public void actionPerformed(ActionEvent e) {
amountMoves++;
moves.setText("Moves: " + amountMoves);
int x = 0;
int y = 0;
for (int i = 0; i < buttons.length; i++) {
for (int j = 0; j < buttons[i].length; j++) {
if (((JButton) e.getSource()).equals(buttons[i][j])) {
x = i;
y = j;
break;
}
}
}
}
列表不是我的强项,到目前为止我只有这个:
ArrayList<Integer> steps = new ArrayList<Integer>();
我知道我可以使用 steps.add()
添加一个元素并使用 steps.remove(steps.size() - 1);
删除最后一个元素,但目前仅此而已
非常感谢任何帮助
编辑:在@Johnny Mopp 和@SSP 的帮助下,我想出了该怎么做。首先,我创建了一个 String ArrayList<String> steps = new ArrayList<String>();
类型的列表(您也可以使用 JButton 类型的列表)并使用 steps.add(buttons[i][j].getText());
将其添加到 Actionlister 中
创建列表列表:-
ArrayList<ArrayList<Integer>> steps = new ArrayList<>();
如果要保存第 2 行和第 2 列数据,请保存如下值:-
steps.get(1).add(1{index of column},2{value to be stored});
如果您是第一次添加元素,您需要像下面这样实例化对象:-
if(steps.get(1) == null){
steps.get(1) = new ArrayList<>();
}
访问数据
steps.get(1).get(2);
我正在开发一个小游戏,玩家点击一个按钮,其值来自二维数组。This is how the game looks如果玩家想要恢复他的动作,我想保存玩家的步骤接受了一个列表,当他单击 "revert" 按钮时,列表的最后一项被还原。问题是我不知道如何将二维数组的索引保存到列表中。
我的代码很远,下面是数组
for (int i = 0; i < buttons.length; i++) {
for (int j = 0; j < buttons[i].length; j++) {
counter++;
buttons[i][j] = new JButton("" + counter);
buttons[i][j].setBackground(Color.white);
buttons[i][j].addActionListener(new ButtonPress());
fenster.add(buttons[i][j]);
ActionListener 的代码在这里:
public void actionPerformed(ActionEvent e) {
amountMoves++;
moves.setText("Moves: " + amountMoves);
int x = 0;
int y = 0;
for (int i = 0; i < buttons.length; i++) {
for (int j = 0; j < buttons[i].length; j++) {
if (((JButton) e.getSource()).equals(buttons[i][j])) {
x = i;
y = j;
break;
}
}
}
}
列表不是我的强项,到目前为止我只有这个:
ArrayList<Integer> steps = new ArrayList<Integer>();
我知道我可以使用 steps.add()
添加一个元素并使用 steps.remove(steps.size() - 1);
删除最后一个元素,但目前仅此而已
非常感谢任何帮助
编辑:在@Johnny Mopp 和@SSP 的帮助下,我想出了该怎么做。首先,我创建了一个 String ArrayList<String> steps = new ArrayList<String>();
类型的列表(您也可以使用 JButton 类型的列表)并使用 steps.add(buttons[i][j].getText());
创建列表列表:-
ArrayList<ArrayList<Integer>> steps = new ArrayList<>();
如果要保存第 2 行和第 2 列数据,请保存如下值:-
steps.get(1).add(1{index of column},2{value to be stored});
如果您是第一次添加元素,您需要像下面这样实例化对象:-
if(steps.get(1) == null){
steps.get(1) = new ArrayList<>();
}
访问数据
steps.get(1).get(2);