gpt4 book ai didi

Java Csv-data 字符串空间分割错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:22 25 4
gpt4 key购买 nike

我在使用命令时遇到一些问题。

我有一个 csv 类型的文件,如下所示:

Merkmals-Nr.;Interne Teile-Nr.;Bereich;Fertigungsschritt;...

读取文件后想要读取一行,然后在“;”之后分割该行通过使用此代码线。

List<String> datenListe = Arrays.asList(data.split(";"));

然后我做了一个system.println

打印效果应如何:
Merkmals-Nr.
Interne Teile-Nr.
贝赖希
Fertigungsschritt
...

打印的实际外观如何:
Merkmals-Nr.
互联网

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at java.util.Arrays$ArrayList.get(Arrays.java:2866)
at CsvEinlesen.main(CsvEinlesen.java:23)

我发现问题是由“Interne Teile-Nr”中的空格引起的。但我不知道如何解决空格问题。

这是完整的代码:

import java.io.*;

import java.util.*;


public class CsvEinlesen {
public static void main(String[] args) {
String fileName = "0-201-08-4473.csv";
File file = new File(fileName);

try {
Scanner csvInputStream = new Scanner(file);

while (csvInputStream.hasNext()) {
String data = csvInputStream.next();

List<String> datenListe = Arrays.asList(data.split(";"));

for (int i = 0; i < 32; i++) {
System.out.println(datenListe.get(i));
}
}

csvInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("CSV-Datei nicht gefunden");
}
}
}

最佳答案

真的有必要将数组转换为 List<String>如果你仍然像普通数组一样迭代它?另外你为什么放 32作为限制?这并不安全 - 正是因为您最终会收到类似 ArrayIndexOutOfBoundsException 的错误。 .

对于这个例子,我的建议是像这样使用数组:

    //the rest of your code...
while (csvInputStream.hasNext()) {
String data = csvInputStream.next();

String[] wordsInLine = data.split(";");

for (int i = 0; i < wordsInLine.length; i++) {
System.out.println(wordsInLine[i]);
}
}
//the rest of your code ...

尝试一下,看看错误是否消失。

关于Java Csv-data 字符串空间分割错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com