【问题标题】:String in for loop doesn't get full context [duplicate]for循环中的字符串没有获得完整的上下文[重复]
【发布时间】:2018-01-13 01:03:31
【问题描述】:

由于我是初学者,我对以下问题一无所知,因此我进行了数小时的研究,但没有任何帮助。
我已经声明了一个静态字符串,它将在 for 循环中分配,稍后字符串 get 会在控制台中打印出来,但它不包含完整的上下文。

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

public class dothework {

    static String info;

    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");

        el_name.size();
        el_speed.size();
        el_altitude.size();
        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 = tempinfo;
        }
    }

    public void printinfo() {
        System.out.println(info);
    }
}

System.out.println(tempinfo); 打印出 5 行的完整信息,每行包含名称、速度和高度,而另一行 System.out.println(info); 仅打印出一行包含名称、速度和高度。所以问题是字符串不同,即使我在这里均衡它们:info = tempinfo;。我想这与 for 循环和/或修饰符有关,但我无法弄清楚。请帮帮我。

【问题讨论】:

  • 你问的是info = tempinfo;info += tempinfo;的区别吗?
  • 您缺少一个主要方法来说明这是minimal reproducible example,但请删除字符串上的静态
  • 我认为 OP 只想将所有 5 行在循环中打印到字符串 info 并让它打印在 5 行中......就像添加每个 tempinfo 后跟换行到info...info += tempinfo + "\n"
  • 是的,每次他设置 info 以引用新的 tempinfo 字符串时,他都会丢弃以前的信息。他想做info += tempinfo + "\n"; 或类似的事情。不是一个很清楚的问题。
  • @HovercraftFullOfEels 我在问为什么这两个字符串的输出不同? info 的输出怎么可能真的等于 tempinfo 的输出呢?对不起,我没有真正问这个...

标签: java string for-loop jsoup


【解决方案1】:

您应该使用StringBuilder 来累积行数。

public class Dothework {

    StringBuilder info = new StringBuilder();

    // for... 

        info.append(tempinfo).append("\n");

目前,循环的每次迭代都会覆盖字符串中存储的先前值。您在这里也不需要静态变量。

【讨论】:

  • 我不好关闭它。但是 OP 没有数组列表,所以这是一个糟糕的骗局
猜你喜欢
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2018-03-14
  • 2017-01-30
相关资源
最近更新 更多