You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java读取txt文件存入自定义学生链表功能实现求助

学生链表程序实现修复指导

现有代码已知问题

  • StudentLinkedList类插入方法逻辑错误:addToHead、addToTail方法中,空链表新增节点时错误将head、tail设为null,正确逻辑应为将head、tail都指向新增节点。
  • StudentLinkedList类打印方法无输出:printAll仅调用了toString()方法但未将结果打印到控制台,缺少输出语句。
  • main方法逻辑不完整:读取生成Student节点后,未做首字母判断、未调用插入方法加入链表,读取完成后未触发打印逻辑。

实现步骤

  1. 修复StudentLinkedList类方法
    • 修正addToHead空链表处理逻辑:空链表时直接赋值head = tail = node
    • 修正addToTail空链表处理逻辑:空链表时直接赋值head = tail = node
    • 修改printAll循环内逻辑,增加打印语句:System.out.println(temp.info.toString());
  2. 补充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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:30:03