数组索引超出了将数组结果追加到java文本区域的界限

数组索引超出了将数组结果追加到java文本区域的界限,java,arrays,Java,Arrays,我有两个程序,分别是SocketServer和MyNoteCenter。每次用户单击下载按钮时,它都会发送到SocketServer进行存储。用户可以通过单击“显示”按钮显示记录来检索其记录。之后,追加到文本区域,但不幸的是,我的代码出现了ArrayOutOfBound错误。错误显示MyNoteCenter中的显示方法和SocketServer方法中的显示方法。我在我的问题上搜索了很多解决方案,但看起来还是一样,我检查了数组索引是否足以容纳5个数据。当在MyNoteCenter调用某个函数时,5

我有两个程序,分别是SocketServer和MyNoteCenter。每次用户单击下载按钮时,它都会发送到SocketServer进行存储。用户可以通过单击“显示”按钮显示记录来检索其记录。之后,追加到文本区域,但不幸的是,我的代码出现了ArrayOutOfBound错误。错误显示MyNoteCenter中的显示方法和SocketServer方法中的显示方法。我在我的问题上搜索了很多解决方案,但看起来还是一样,我检查了数组索引是否足以容纳5个数据。当在MyNoteCenter调用某个函数时,5个数据将通过使用参数构造函数带到SocketServer

MyNoteCenter程序(部分)

你不能硬编码5。唯一有效的索引是0、1、2、3、4

为什么要创建一个包含5个值的数组,然后只返回一个字符串?其他4个值将丢失

可能需要返回整个阵列:

public String[] show()

...

return arr;

在SocketServer类中…show方法您试图返回arr[5]…这是一个错误,因为您的数组大小为5 arr[0]…到arr[4],display方法也是如此,STRarr[5]不可能。数组索引需要减少到4?因为您已将数组大小定义为5,因此,可能的索引为0,1,2,3,4,否则它将抛出ArrayIndexOutOfBoundException。所以现在根据需求返回将在范围内的索引。如前所述,对for循环的条件语句进行更改by@camickri尝试编辑根据您的指南,但我仍然得到相同的错误。。。线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException 5在SocketServer.show(SocketServer.java:117)在MyNoteCenter.display(MyNoteCenter.java:235)在MyNoteCenter.actionPerformed(MyNoteCenter.java:213)在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:22)中出现异常这是我在您的代码中得到的错误消息,您仍在尝试访问索引“5”。修复代码。我们无法为您进行调试。有关可能的问题,请参阅编辑。
public SocketServer(String selection,String id,String name,String year,String major) //The constructor accept the value from user and store it, it's being implement at others function  
{
 this.selection = selection;
 this.name = name;  
 this.id = id ;
 this.year = year ;
 this.major = major ;
}
public String show()
{
    String [] arr = new String[5];
    arr[0] = name;
    arr[1] = id;
    arr[2] = year;
    arr[3] = major;
    arr[4] = selection;
    counter++;
    JOptionPane.showMessageDialog(null,"You are in" +counter);
    return arr[5];

}
for(int i = 0; i <=ds.length;i++)
for(int i = 0; i < ds.length; i++)
return arr[5];
public String[] show()

...

return arr;