我已经阅读了以下两个堆栈溢出文章:this one和this one。我已经遵循了答案,但仍然无处可寻。
我正在尝试读取文本文件(this one)并将其存储在ArrayList中。但是当我继续将ArrayList的内容打印到控制台时,什么也不会返回...
任何帮助将不胜感激。
public static void main(String[] args) throws IOException {
ArrayList<Integer> test = new ArrayList<Integer>();
Scanner textFileOne = new Scanner(new File("ChelseaVector.txt"));
while (textFileOne.hasNext()) {
if(textFileOne.hasNextInt()) {
test.add(textFileOne.nextInt());
} else {
textFileOne.next();
}
}
textFileOne.close();
System.out.println(test);
}
答案 0 :(得分:0)
您需要跳过文件开头的[
字符,并将定界符定义为]
:
Scanner textFileOne =
new Scanner(new File("ChelseaVector.txt")).useDelimiter(", ").skip("\\[");
答案 1 :(得分:0)
List<String> originalFile = new ArrayList<>(Files.readAllLines(Paths.get("ChelseaVector.txt")));
List<Integer> formattedFile = new ArrayList<>();
for (String line : originalFile ) {
String newLine = line.replaceAll("[", "").replaceAll("]", "").replaceAll(" ", "");
List<String> numbers = Arrays.asList(String.join(","));
formattedFile.addAll(numbers);
}
System.out.println(formattedFile);
答案 2 :(得分:0)
您可以这样做
public static void main(String[] args) throws IOException {
ArrayList<Integer> test = new ArrayList<Integer>();
Scanner textFileOne = new Scanner(new File("ChelseaVector.txt")).useDelimiter(",");
while (textFileOne.hasNext()) {
if (textFileOne.hasNextInt()) {
test.add(textFileOne.nextInt());
} else {
int number=Integer.parseInt(textFileOne.next().replaceAll("[\\[\\]]","").trim());
test.add(number);
}
}
textFileOne.close();
System.out.println(test);
}
答案 3 :(得分:0)
由于您的文件仅包含一行,因此我认为您不应使用循环。 如果您使用的是default implementation
,以下代码应该可以使用String[] strings = Files.lines(Paths.get("ChelseaVector.txt")).findFirst().split("\\D+");
List<Integer> ints = Arrays.stream(strings).map(Integer::valueOf).collect(Collectors.toList());