首页 > 解决方案 > 如何使用 for 循环将一些数据插入到类的索引数组中以及如何查看它们?

问题描述

如何使用循环将数据插入数组?假设我有一个带有空构造函数 Teacher() 数据的教师类,其名称、id 等。如何使用主类的 for 循环在该教师类上插入名称?

我尝试使用循环输入数据,但在查看时数据显示我的数组索引超出范围。

Teacher [] a = new Teacher[2];
for (int i = 0; i <= a.length; i++) {
    System.out.println("Number "+i+" Teacher name: ");
    String name = in.nextLine();
    a[i] = new Teacher(name, "ECE", "141", "SIA", 2345678);
}
System.out.println(a[a.length - 1].toString());
    for (int i = 0; i < a.length; i++) {
    System.out.println(a[i].getName());
}

更新尝试了更好的答案,但出现了同样的问题。伙计们,我的问题是在a[i] = new Teacher(name, "ECE", "141", "SIA", 2345678)行向数组中插入数据的时间 ;这里发生异常。就像无法插入数据一样。

Number 0 Teacher name: 
siat
Number 1 Teacher name: 
manik
Number 2 Teacher name: 
munna
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at oop.SchoolMain.main(SchoolMain.java:31)

标签: javaarrays

解决方案


你声明你的数组有2元素:

Teacher [] a = new Teacher[2];

它们被放置在索引01.

在以下循环中,您从0to迭代,2因此您尝试访问 index 处的元素2。如上所述,没有这样的元素。

for (int i = 0; i <= 2; i++) {
}

同样的情况也发生在这一行。再次索引2

System.out.println(a[2].toString());

我假设你想访问最后一个元素,所以你可以这样做:

System.out.println(a[a.length - 1].toString());

您的第一个循环应该看起来像第二个循环,您将在其中迭代,a.length这样您就不会访问索引大于数组中最后一个索引的元素。

这就是代码的样子:

Teacher [] a = new Teacher[2];
for (int i = 0; i < a.length; i++) {
    System.out.println(i+">Name: ");
    String name = in.nextLine();
    a[i] = new Teacher(name, "123", "ECE", "sia", 234567);
}
System.out.println(a[a.length -1].toString());
for (int i = 0; i < a.length; i++) {
    System.out.println(a[i].getName());
}

推荐阅读