如何解决 - 线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:100

时间:2016-07-07 11:38:23

标签: java swing

我是编程的初学者。我进入第一个编程课程几周,所以请耐心等待。我不是一个寻求帮助的人,所以我一直在寻找一个没有运气的答案。这也是我第一次在任何类型的论坛上发布任何内容,所以如果我的问题结构不对,我很抱歉,我会纠正以后的帖子。

我在运行程序时发现了这个问题。

  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);
                }
             }
           }
       }

提前感谢您的帮助。我不打算为我做这件事,我只是陷入困境,需要帮助找到我的路。

1 个答案:

答案 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进行计数。