我试图像学校一样制作小游戏。它旨在帮助您了解您的时间表。我想要的是每次表的乘数(5x8然后5x3然后5x9等)。
我已经使用数组生成了控制数字,如下所示
public static Integer[] generateNumbers()
{
Integer[] arr = new Integer[12];
for(int j = 0; j < arr.length; j++)
{
arr[j] = j+1;
}
Collections.shuffle(Arrays.asList(arr));
System.out.println(Arrays.asList(arr));
return arr;
}
我怎样才能使每次用户点击按钮时,选择数组中的下一个数字,记住按钮是在另一个类中声明的,ActionListener也在其他地方声明?
哦,数组在类范围内可用,因为函数声明如下:
public static Integer[] arr = generateNumbers();
答案 0 :(得分:1)
public class UnicornFrame extends JFrame {
private Integer[] poneyArr = MyClassThatGeneratesNumbers.generateNumbers();
private int poneyCounter = 0;
private JButton poneyButton;
public void poneyInit() {
System.out.println("Unicorns are poney magical friends!");
poneyButton = new JButton("OMG! Ponies!");
// Java 8 Lambdas! Yey!
poneyButton.addActionListener(e -> {
if (poneyCounter >= poneyArr.length) {
poneyArray = MyClassThatGeneratesNumbers.generateNumbers();
poneyCounter = 0;
}
Integer selected = poneyArr[poneyCounter++];
System.out.println("OMG! I have selected " + selected);
});
// other stuff
add(poneyButton, BorderLayout.CENTER);
}
}
答案 1 :(得分:0)
不需要单独的类中的按钮,动作监听器将在单击时与您的数组通信,我看到的最简单的方法是将一个公共方法放入数组的类中,它接受一个索引,然后递增索引,并返回存储在其中的元素。
有趣的编码,但这些作业是为了让你挠头,尝试编写一些代码,让我们知道它是否中断,而不是要求一般的答案。