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

Java如何使用toString()打印整数链表?为何我的程序无输出?

问题原因

你的程序没有输出和toString()里的val != null判断没有关系,问题完全出在构造方法的实现上:

  • 你在IntList构造方法中创建的是Java标准库自带的java.util.LinkedList临时对象,这个对象和你自定义的IntList的链表结构没有任何关联,构造方法执行完这个临时对象就会被回收。
  • 你自定义的IntList的核心成员head从头到尾都没有被赋值,一直保持默认的null值。toString()方法遍历的时候,初始的val就是head也就是null,循环一次都不会执行,最终返回空字符串,所以控制台没有任何内容输出。

修复方案

把构造方法改成直接操作你自己定义的Node节点来构建链表即可,参考代码:

public IntList(int n) {
    if (n <= 0) {
        head = null;
        return;
    }
    Random rand = new Random();
    // 初始化头节点
    head = new Node();
    head.value = rand.nextInt(n);
    Node current = head;
    // 构建剩余n-1个节点
    for (int i = 1; i < n; i++) {
        Node nextNode = new Node();
        nextNode.value = rand.nextInt(n);
        current.next = nextNode;
        current = nextNode;
    }
}

可选优化

如果链表长度较长,建议toString()方法用StringBuilder拼接字符串,避免频繁创建字符串对象带来的性能损耗:

public String toString() {
    StringBuilder sb = new StringBuilder();
    for(IntList.Node val = head; val != null; val = val.next) {
        sb.append(val.value);
        // 可以加个分隔符输出更清晰,比如 sb.append(" ");
    }
    return sb.toString();
}

内容的提问来源于stack exchange,提问作者kafkashores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:01