Java 将整数从文本文件读入arraylist

Java 将整数从文本文件读入arraylist,java,java-8,Java,Java 8,我读过这两篇堆栈溢出文章:和。我已经找到了答案,但仍然不知道答案在哪里 我试图读入文本文件()并将其存储在ArrayList中。但是,当我继续将ArrayList的内容打印到控制台时,不会返回任何内容 任何帮助都将不胜感激 public static void main(String[] args) throws IOException { ArrayList<Integer> test = new ArrayList<Integer>(); Scan

我读过这两篇堆栈溢出文章:和。我已经找到了答案,但仍然不知道答案在哪里

我试图读入文本文件()并将其存储在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);   
}
publicstaticvoidmain(字符串[]args)引发IOException{
ArrayList测试=新的ArrayList();
Scanner textFileOne=新扫描仪(新文件(“ChelseaVector.txt”);
while(textFileOne.hasNext()){
if(textFileOne.hasNextInt()){
test.add(textFileOne.nextInt());
}否则{
textFileOne.next();
}
}
textFileOne.close();
系统输出打印LN(测试);
}

您需要跳过文件开头的
[
字符,并将分隔符定义为
]

Scanner textFileOne = 
    new Scanner(new File("ChelseaVector.txt")).useDelimiter(", ").skip("\\[");
List originalFile=new ArrayList(Files.readAllLines(path.get(“ChelseaVector.txt”));
List formattedFile=new ArrayList();
用于(字符串行:原始文件){
字符串newLine=line.replaceAll(“[”,”).replaceAll(“],”).replaceAll(“,”);
列表编号=Arrays.asList(String.join(“,”);
formattedFile.addAll(数字);
}
System.out.println(格式化文件);
您可以这样做

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);
    }
publicstaticvoidmain(字符串[]args)引发IOException{
ArrayList测试=新的ArrayList();
Scanner textFileOne=新扫描仪(新文件(“ChelseaVector.txt”)。使用分隔符(“,”);
while(textFileOne.hasNext()){
if(textFileOne.hasNextInt()){
test.add(textFileOne.nextInt());
}否则{
int number=Integer.parseInt(textFileOne.next().replaceAll(“[\[\\]]”,“).trim());
测试。添加(编号);
}
}
textFileOne.close();
系统输出打印LN(测试);
}

因为您的文件只包含一行,所以我认为您不应该使用循环。 如果您正在使用

String[]strings=Files.lines(path.get(“ChelseaVector.txt”)).findFirst().split(\\D+”);
List ints=Arrays.stream(strings).map(Integer::valueOf.collect(Collectors.toList());

这可能是由于文件的结构。请注意,
“ChelseaVector.txt”
的内容用方括号括起来(
[]
)。尝试删除它们。是的,但我遇到一个异常:索引0附近的未关闭字符类[@FeelingLikeAJabroni arg,忘记转义它。已编辑并修复。工作正常,谢谢……我可以添加replace()方法删除[]吗?至少根据我的观察,它遗漏了最后一位数字。
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);
    }
String[] strings = Files.lines(Paths.get("ChelseaVector.txt")).findFirst().split("\\D+");
List<Integer> ints = Arrays.stream(strings).map(Integer::valueOf).collect(Collectors.toList());