[英]Printing on next line every time char is reached
在我的代码中,我首先将两个字符串数组添加到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;
}
}
只需在以下情况下更改此设置:
if (result.indexOf(',') >= 0)
为此:
if (list.get(i).indexOf(',') >= 0)
问题是您总是在寻找结果变量。 当第一个','出现时,结果将始终包含','。
那是一些奇怪的代码,但我认为这是一种学习练习,所以我猜很好。 您的问题是,一旦结果字符串包含逗号,则每次添加新元素时都添加行分隔符。
示例:假设您的列表包含"a", "b", ",", "c", "d"
。
现在,您将元素迭代并将其添加到字符串中,该字符串如下所示:
"a"
,字符串看起来像"a"
"b"
,字符串看起来像"ab"
","
,字符串看起来像"ab ,"
,现在您的字符串第一次包含逗号,因此您添加了行分隔符,因此字符串看起来像"ab ,\\n"
"c"
,字符串看起来像"ab ,\\nc"
。 因为您的字符串中仍然有逗号,所以添加了另一行分隔符,并且字符串为"ab ,\\nc\\n"
。 "d"
,字符串看起来像"ab ,\\nc\\nd"
。 因为您的字符串中仍然有逗号,所以添加了另一行分隔符,并且字符串为"ab ,\\nc\\nd\\n"
。 要解决此问题,您有几种可能:
result = result.replace(",", ",\\n");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.