2016-07-07 109 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

非常感謝 –

相關問題