将上面Java程序改错
时间: 2024-09-25 09:06:43 浏览: 27
在上述Java程序中,我发现了一些错误和改进的地方:
1. 类名大小写问题:`Arrstudent` 应改为大写的 `ArrStudent`,因为Java中的类名首字母通常大写以示区分。
2. `StudScoref` 的构造函数命名不符合Java习惯,通常构造函数前缀不加 "this."。应该直接写成 `StudScoref(String name, int studentNo, double score)`。
3. `void` 缺少方法体的结束括号,比如在 `listAll()` 和 `search(int index)` 方法上。
4. `add()` 方法里的条件检查,当数组达到最大容量时,可以考虑增加一个异常处理,以提高代码的健壮性。
5. `insert()` 方法里,插入后的索引计算和数组更新循环部分,逻辑上需要优化,避免不必要的复制。
这里是修正后的代码:
```java
package aaa;
import java.io.*;
class StudScoref {
String name;
int studentNo;
double score;
// 修改后的构造函数
public StudScoref(String name, int studentNo, double score) {
this.name = name;
this.studentNo = studentNo;
this.score = score;
}
public String toString() {
return studentNo + "." + name + "." + score;
}
}
public class ArrStudentUser {
public static void main(String[] args) throws IOException {
ArrStudent stud = new ArrStudent();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("****************学生成绩信息管理系统*****************");
// ...其他代码...
break; // 移除无用的case 0: System.exit(0); 结尾
// 其他 case... 部分保持不变
}
}
}
// 更正接口和实现部分
interface StudOperation {
void add(StudScore node);
void listAll();
void search(int index);
}
class ArrStudent implements StudOperation {
StudScore stud[] = new StudScore[5];
int count = 0;
// 修改add()方法
public void add(StudScore node) {
if (count == stud.length) {
throw new ArrayIndexOutOfBoundsException("存储空间已满");
}
stud[count] = node;
count++;
}
// 简化insert()方法
public void insert(int index, StudScore node) {
if (index < 0 || index > stud.length) {
System.out.println("插入位置出错!");
return;
}
if (count == stud.length) {
System.out.println("存储空间已满!");
return;
}
if (count + 1 == stud.length) {
count++;
stud[count] = node;
} else {
for (int i = count; i >= index; i--) {
stud[i + 1] = stud[i];
}
stud[index] = node;
count++;
System.out.println("插入成功!");
}
}
// 添加缺失的结束括号
@Override
public void listAll() {
for (int i = 0; i < count; i++) {
System.out.print(stud[i].name + "\t");
System.out.print(stud[i].studentNo + "\t");
System.out.println(stud[i].score);
}
}
@Override
public void search(int index) {
if (index <= count && index > 0) {
System.out.println("您查找的信息是:" + stud[index - 1]);
} else {
System.out.println("输入的序号无效!");
}
}
}
```
阅读全文