将 List<string> 连接到 Java 中的数组末尾
Concatenate a List<string> to end of array in Java
我有这个代码:
public class Test3 {
public static void main(String[] args) throws IOException {
List<String> answers = new ArrayList<>();
answers.add("Yes");
answers.add("No");
try (BufferedReader br = new BufferedReader(new FileReader("D://new.csv"))) {
String line;
while ((line = br.readLine()) != null) {
for (int i = 0; i < answers.size(); i++) {
String[] sae = line.split(",");
sae = Arrays.copyOf(sae, sae.length + 1);
sae[sae.length - 1] = answers.get(i);
System.out.println(Arrays.toString(sae));
}
}
}
}
}
输出为:
["something", "hello", Yes]
["something", "hello", No]
["abc", "bye", Yes]
["abc", "bye", No]
我正在读取一个 csv 文件并将其拆分。我正在通过 for 循环连接一个 list<string>
,但我在最后两次得到了 list<string>
。我怎样才能阻止它这样做?
我想要的输出是:
["something", "hello", Yes]
["abc", "bye", No]
您可以创建一个计数器并在每次阅读一行时递增它并且:
如果您的 csv 中的行与答案中的行匹配:
sae[sae.length - 1] = answers.get(计数器);
否则你可能想从头开始:
sae[sae.length - 1] = answers.get(计数器 % answers.size());
移除你的 for 循环,你不需要它
您正在为 .csv
文件中的每一行遍历整个 answers
数组。
public static void main(String[] args) throws IOException {
List<String> answers = new ArrayList<>();
answers.add("Yes");
answers.add("No");
try (BufferedReader br = new BufferedReader(new FileReader("new.csv"))) {
String line;
int i = 0;
while ((line = br.readLine()) != null) {
String[] sae = line.split(",");
sae = Arrays.copyOf(sae, sae.length + 1);
sae[sae.length - 1] = answers.get(i%answers.size());
System.out.println(Arrays.toString(sae));
}
}
}
Lukas Resch 提到了一个很好的答案,这是它的代码。
我有这个代码:
public class Test3 {
public static void main(String[] args) throws IOException {
List<String> answers = new ArrayList<>();
answers.add("Yes");
answers.add("No");
try (BufferedReader br = new BufferedReader(new FileReader("D://new.csv"))) {
String line;
while ((line = br.readLine()) != null) {
for (int i = 0; i < answers.size(); i++) {
String[] sae = line.split(",");
sae = Arrays.copyOf(sae, sae.length + 1);
sae[sae.length - 1] = answers.get(i);
System.out.println(Arrays.toString(sae));
}
}
}
}
} 输出为:
["something", "hello", Yes]
["something", "hello", No]
["abc", "bye", Yes]
["abc", "bye", No]
我正在读取一个 csv 文件并将其拆分。我正在通过 for 循环连接一个 list<string>
,但我在最后两次得到了 list<string>
。我怎样才能阻止它这样做?
我想要的输出是:
["something", "hello", Yes]
["abc", "bye", No]
您可以创建一个计数器并在每次阅读一行时递增它并且:
如果您的 csv 中的行与答案中的行匹配:
sae[sae.length - 1] = answers.get(计数器);
否则你可能想从头开始:
sae[sae.length - 1] = answers.get(计数器 % answers.size());
移除你的 for 循环,你不需要它
您正在为 .csv
文件中的每一行遍历整个 answers
数组。
public static void main(String[] args) throws IOException {
List<String> answers = new ArrayList<>();
answers.add("Yes");
answers.add("No");
try (BufferedReader br = new BufferedReader(new FileReader("new.csv"))) {
String line;
int i = 0;
while ((line = br.readLine()) != null) {
String[] sae = line.split(",");
sae = Arrays.copyOf(sae, sae.length + 1);
sae[sae.length - 1] = answers.get(i%answers.size());
System.out.println(Arrays.toString(sae));
}
}
}
Lukas Resch 提到了一个很好的答案,这是它的代码。