Java读取txt文件存入自定义学生链表功能实现求助
学生链表程序实现修复指导
现有代码已知问题
- StudentLinkedList类插入方法逻辑错误:
addToHead、addToTail方法中,空链表新增节点时错误将head、tail设为null,正确逻辑应为将head、tail都指向新增节点。 - StudentLinkedList类打印方法无输出:
printAll仅调用了toString()方法但未将结果打印到控制台,缺少输出语句。 - main方法逻辑不完整:读取生成Student节点后,未做首字母判断、未调用插入方法加入链表,读取完成后未触发打印逻辑。
实现步骤
- 修复StudentLinkedList类方法
- 修正
addToHead空链表处理逻辑:空链表时直接赋值head = tail = node - 修正
addToTail空链表处理逻辑:空链表时直接赋值head = tail = node - 修改
printAll循环内逻辑,增加打印语句:System.out.println(temp.info.toString());
- 修正
- 补充main方法业务逻辑
- 每次生成Student对象后,提取姓氏首字母,统一转为大写后判断是否为元音(A/E/I/O/U)
- 元音首字母调用
list.addToHead(node)插入链表头,辅音首字母调用list.addToTail(node)插入链表尾 - 所有数据读取完成后,调用
list.printAll()输出全部学生信息
核心参考代码
修复后的addToHead方法
public void addToHead(Node node){ if(head == null){ head = tail = node; return; } node.next = head; head = node; }
修复后的addToTail方法
public void addToTail(Node node){ if(head == null){ head = tail = node; return; } tail.next = node; tail = node; }
修复后的printAll方法
public void printAll(){ Node temp = head; while(temp != null){ System.out.println(temp.info.toString()); temp = temp.next; } }
main方法新增首字母判断逻辑
while (in.hasNext()) { ln = in.nextLine(); fn = in.nextLine(); s = new Student(ln,fn); node = new Node(s); // 新增首字母判断 char firstLetter = Character.toUpperCase(ln.charAt(0)); if (firstLetter == 'A' || firstLetter == 'E' || firstLetter == 'I' || firstLetter == 'O' || firstLetter == 'U') { list.addToHead(node); } else { list.addToTail(node); } } // 循环结束后打印 list.printAll(); in.close();
内容的提问来源于stack exchange,提问作者Reynzel Clark Ang
相关产品推荐
相关产品推荐

