2016-07-07 66 views
0

我是编程的初学者。我是第一次参加编程课的几个星期,所以请耐心等待。我不是一个人寻求帮助,所以我已经广泛搜索了一个答案,没有运气。这也是我第一次在任何类型的论坛上发布任何内容,所以如果我的问题结构关闭,我很抱歉,我会为将来的帖子更正。如何解决 - 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:100

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

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

一个100个元素的数组索引从0到99,而不是1到100. –

回答

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<=100i < 100,你也应该改变int i=1int i=0,为数组从0开始,而不是1

随着i<=100你”从0..100重新计数,但数组索引从0..length-1,所以你需要从你的案例0..99计数。

+0

非常感谢 –

相关问题