每次到达字符时在下一行打印

时间:2017-05-10 13:59:35

标签: java arrays

在我的代码中,我首先将两个字符串数组添加到String arrayList中。在我的toString()方法中,我想打印arrayList,以便每次到达char','时,我们在下一行(连续)中打印下一个数组。但是使用这段代码我得到第一个数组的一行和第二个数据的列。我在这做错了什么?

click here for output

代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PrintList {
    static String[] data = {"cat","dog"," ","hen",","};
    static String[] data2 = {"ttt","yyy","ggg","ddd", ","};
    static ArrayList <String> list = new ArrayList<>();
    public static void main(String[] args) {
        dataRecord();
        System.out.print(listToString(list));
    }

    public static void dataRecord () {
        list.addAll(Arrays.asList(data));
        list.addAll(Arrays.asList(data2));

    }
    public static String listToString (List <?> list) {
        String result = "";
        for (int i = 0; i < list.size(); i++) {
           result += "      " + list.get(i);
           if (result.indexOf(',') >= 0) {
              result = result + System.lineSeparator();
           }
        }
        return result;
    } 
}

2 个答案:

答案 0 :(得分:2)

如果出现以下情况,请更改此内容:

if (result.indexOf(',') >= 0) 

这个:

if (list.get(i).indexOf(',') >= 0) 

问题是你总是在查看结果变量。当第一个','出现时,结果将始终包含','。

答案 1 :(得分:0)

那里有一些奇怪的代码,但我认为这是一个学习练习,所以我觉得很好。您的问题是,一旦结果字符串包含逗号,您每次添加新元素时都会添加行分隔符。

示例:假设您的列表包含"a", "b", ",", "c", "d"

现在你迭代并将元素添加到一个字符串,然后如下所示:

  • 您添加"a",字符串看起来像"a"
  • 您添加"b",字符串看起来像"a b"
  • 你添加",",字符串看起来像"a b ,",现在你的字符串第一次包含逗号,所以你添加行分隔符,因此字符串看起来像"a b ,\n"
  • 您添加"c",字符串看起来像"a b ,\n c"。因为字符串中仍然有逗号,所以会添加另一行separtor,字符串为"a b ,\n c\n"
  • 您添加"d",字符串看起来像"a b ,\n c\n d"。因为字符串中仍然有逗号,所以会添加另一行separtor,字符串为"a b ,\n c\n d\n"

要解决这个问题,你有几种可能性:

  • 检查您刚添加的元素是逗号还是包含逗号。如果是这样,添加行分隔符(并且可能不添加元素)
  • 添加元素而不进行任何检查,并在末尾(循环后)替换逗号,例如通过result = result.replace(",", ",\n");