用Java重新编写,并且在每一行代码旁边都有注释
时间: 2024-02-18 20:01:14 浏览: 214
好的,下面是使用Java重新编写的学生管理系统的代码,每一行代码都有注释:
```java
import java.util.Scanner;
public class Main {
static final int MAX_STUDENTS = 5; // 学生人数上限
static final int TABLE_SIZE = 10; // 哈希表大小
// 学生类
static class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() { return id; }
public String getName() { return name; }
}
// 哈希表节点类
static class Node {
private int key;
private Student value;
public Node(int key, Student value) {
this.key = key;
this.value = value;
}
public int getKey() { return key; }
public Student getValue() { return value; }
}
// 哈希表类
static class HashMap {
private Node[] table;
public HashMap() {
table = new Node[TABLE_SIZE];
}
// 哈希函数
private int hash(int key) {
return key % TABLE_SIZE;
}
// 插入节点
public void put(int key, Student value) {
int index = hash(key);
while (table[index] != null && table[index].getKey() != key) {
index = (index + 1) % TABLE_SIZE;
}
if (table[index] != null) {
table[index] = null; // 如果节点已经存在,则删除旧节点
}
table[index] = new Node(key, value); // 插入新节点
}
// 查找节点
public Student get(int key) {
int index = hash(key);
while (table[index] != null && table[index].getKey() != key) {
index = (index + 1) % TABLE_SIZE;
}
if (table[index] == null) {
return new Student(-1, ""); // 如果节点不存在,则返回空学生对象
}
else {
return table[index].getValue(); // 返回节点的值
}
}
}
public static void main(String[] args) {
HashMap map = new HashMap();
int count = 0;
Scanner scanner = new Scanner(System.in);
while (count < MAX_STUDENTS) {
System.out.println("请输入第" + (count + 1) + "个学生的学号和姓名:");
int id = scanner.nextInt();
String name = scanner.next();
map.put(id, new Student(id, name));
count++;
}
System.out.println("学生信息如下:");
for (int i = 0; i < TABLE_SIZE; i++) {
Node node = map.table[i];
if (node != null) {
Student student = node.getValue();
System.out.println(student.getId() + "\t" + student.getName());
}
}
}
}
```
这个Java版本的学生管理系统与前面的C++版本基本相同,只是语法有所不同。在这里,我们使用了内部类来定义学生类和哈希表节点类,使用了泛型数组来表示哈希表,同时还增加了注释来解释每一行代码的作用。
阅读全文