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

循环中赋值的静态String无法保留完整上下文问题求助

问题分析与解决办法

嘿,我来帮你捋清楚这个问题!其实原因特别直观,你现在的代码里每次循环都在覆盖info变量的值,而不是把新内容追加进去,这就是最后只显示一行的核心问题。

问题到底出在哪?

你看循环里的这行代码:

info = tempinfo;

每次循环执行到这里,都会把当前的tempinfo直接赋值给info——就像每次拿一张新的纸完全盖住旧纸,最后自然只剩最后那张纸的内容。而循环里的System.out.println(tempinfo)能打印5行,是因为它每次都会输出当前循环生成的tempinfo,和info的赋值操作完全是两回事。

怎么解决?

我们需要把每次生成的tempinfo内容追加到info里,而不是替换掉它。这里有两种实用的方法:

方法1:字符串直接拼接(适合新手快速上手)

先把info的初始值设为空字符串(默认是null,直接拼接会出问题),然后在循环里用+=来追加内容,记得加上换行符保证输出格式和循环内一致:

// 把静态变量初始化改为空字符串
static String info = "";

// 循环里的赋值改成追加操作
info += tempinfo + "\n";

方法2:使用StringBuilder(更高效,推荐长期使用)

如果以后要处理大量字符串拼接,StringBuilder比直接用+=效率高很多,修改方式如下:

// 把静态变量换成StringBuilder并初始化
static StringBuilder info = new StringBuilder();

// 循环里改成append方法追加内容
info.append(tempinfo).append("\n");

// printinfo方法里要把StringBuilder转换成String输出
public void printinfo() {
    System.out.println(info.toString());
}

修改后的完整代码示例(StringBuilder版本)

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class dothework {
    static StringBuilder info = new StringBuilder(); // 替换为StringBuilder并初始化

    public void scrapeinfo() throws IOException {
        Document doc = Jsoup.connect("html").get();
        Elements el_name = doc.select(".champ-name");
        Elements el_speed = doc.select(".speed");
        Elements el_altitude = doc.select(".altitude");

        for(int i = 0; i < 5; i++) {
            String name = el_name.get(i).text();
            String speed = el_speed.get(i).text();
            String altitude = el_altitude.get(i).text();
            String tempinfo = (name+": "+speed+" ("+altitude+")");
            System.out.println(tempinfo);
            info.append(tempinfo).append("\n"); // 追加内容而非覆盖
        }
    }

    public void printinfo() {
        System.out.println(info.toString()); // 转换为String输出
    }
}

这样修改后,调用printinfo()就能输出完整的5行内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:07:46