我是编程的初学者。我进入第一个编程课程几周,所以请耐心等待。我不是一个寻求帮助的人,所以我一直在寻找一个没有运气的答案。这也是我第一次在任何类型的论坛上发布任何内容,所以如果我的问题结构不对,我很抱歉,我会纠正以后的帖子。
我在运行程序时发现了这个问题。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at btn.Butto.<init>(Butto.java:23)
at btn.Butto.main(Butto.java:34)
Java Result: 1
BUILD SUCCESSFUL
这是我正在处理的代码
package btn;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Butto extends JFrame implements ActionListener{
JButton[] btn = new JButton[100];
public Butto(){
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("100 Button");
FlowLayout fl =new FlowLayout();
setLayout(fl);
for (int i=1; i<=100;i++){
btn[i] = new JButton();
add(btn[i]);
btn[i].setText("CLick"+i);
btn[i].addActionListener(this);
}
}
public static void main(String[] args) {
Butto bt = new Butto();
bt.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
for(int j=1; j<btn.length; j++){
if(e.getSource().equals(btn[j])){
JOptionPane.showMessageDialog(null, "click"+j);
}
}
}
}
提前感谢您的帮助。我不打算为我做这件事,我只是陷入困境,需要帮助找到我的路。
答案 0 :(得分:0)
问题出在这一部分:
for (int i=1; i<=100;i++){
btn[i] = new JButton();
add(btn[i]);
btn[i].setText("CLick"+i);
btn[i].addActionListener(this);
}
将i<=100
更改为i < 100
,您还应将int i=1
更改为int i=0
,因为数组从0开始,而不是1。
使用i<=100
计算0..100
,但数组是从0..length-1
编入索引的,因此您需要根据您的0..99
进行计数。