为什么以下代码的学生测试类显示灰色,请找出这段代码不能运行的原因,并修改package MianXiangDuiXiangDemo3; public class StudentsTest { public static boolean main(String[] args) { //创建数组 Students[] arr = new Students[3]; //创建学生对象 Students stu1 = new Students("财", 1, 24); Students stu2 = new Students("来", 2, 26); Students stu3 = new Students("旺", 3, 21); //添加到数组 arr[0] = stu1; arr[1] = stu2; arr[2] = stu3; //添加一个学生对象 Students stu4 = new Students("盛", 4, 23); //唯一性判断,已存在,则不添加,不存在,则加 boolean flag = contains(arr, stu4.getId()); if (flag) { //存在 System.out.println("id存在,请重新添加"); } else { //不存在 //数组存满,则创建一个新的数组,新的数组长度 = +1 //数组没满,直接添加 int count = getcount(arr); if (count == arr.length) { //数组存满 //创建一个新的数组,新的数组长度 = +1 Students[] newArr = creatNewArr(arr); newArr[count] = stu4; printArr(newArr); } else { //数组没满 arr[count] = stu4; printArr(arr); } } return flag; }
时间: 2024-01-26 11:02:40 浏览: 62
以下是修改后的代码:
```java
package MianXiangDuiXiangDemo3;
public class StudentsTest {
public static void main(String[] args) {
//创建数组
Students[] arr = new Students[3];
//创建学生对象
Students stu1 = new Students("财", 1, 24);
Students stu2 = new Students("来", 2, 26);
Students stu3 = new Students("旺", 3, 21);
//添加到数组
arr[0] = stu1;
arr[1] = stu2;
arr[2] = stu3;
//添加一个学生对象
Students stu4 = new Students("盛", 4, 23);
//唯一性判断,已存在,则不添加,不存在,则加
boolean flag = contains(arr, stu4.getId());
if (flag) { //存在
System.out.println("id存在,请重新添加");
} else { //不存在
//数组存满,则创建一个新的数组,新的数组长度 = +1
//数组没满,直接添加
int count = getCount(arr);
if (count == arr.length) { //数组存满
//创建一个新的数组,新的数组长度 = +1
Students[] newArr = createNewArr(arr);
newArr[count] = stu4;
printArr(newArr);
} else { //数组没满
arr[count] = stu4;
printArr(arr);
}
}
}
public static boolean contains(Students[] arr, int id) {
for (Students s : arr) {
if (s != null && s.getId() == id) {
return true;
}
}
return false;
}
public static int getCount(Students[] arr) {
int count = 0;
for (Students s : arr) {
if (s != null) {
count++;
}
}
return count;
}
public static Students[] createNewArr(Students[] arr) {
Students[] newArr = new Students[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
return newArr;
}
public static void printArr(Students[] arr) {
for (Students s : arr) {
if (s != null) {
System.out.println(s);
}
}
}
}
```
原因是原代码中的 `main()` 方法返回类型为 `boolean`,而不是 `void`,因此无法运行。同时,还需要将 `main()` 方法中的唯一性判断、计算数组大小、创建新数组和打印数组的代码移至其他方法中,并进行相应修改。
阅读全文