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