如何将混合类型文件中的整数存储到数组中?JAVA

如何将混合类型文件中的整数存储到数组中?JAVA,java,arrays,file-io,Java,Arrays,File Io,我有一个包含一些整数和字符串的文本文件(扫描文件)。我想遍历该文件,获取整数并将其存储到整数数组(array1)中 以下是我正在使用的方法: public void printIntArray(Scanner file){ int x = 0; while(file.hasNext()){ array1[x] = file.nextInt(); x++; } System.out.println("The li

我有一个包含一些整数和字符串的文本文件(扫描文件)。我想遍历该文件,获取整数并将其存储到整数数组(array1)中

以下是我正在使用的方法:

  public void printIntArray(Scanner file){
      int x = 0;
      while(file.hasNext()){
        array1[x] = file.nextInt();
        x++;
      }

      System.out.println("The list size is: " + (x+1));
      System.out.print("The list is:");

    for(int z=0; z <= x ; z++)
        System.out.println(array1[z]);

    }

我建议使用
列表
而不是
[]
。只需遍历文件,用逗号删除所有非数字字符,替换所有重复的逗号,然后用逗号拆分即可

public static void main(String[] args) throws FileNotFoundException {
    Scanner scanner = new Scanner(new FileInputStream("input.txt"));
    printIntArray(scanner);
}

public static void printIntArray(Scanner file) {
    List<Integer> list = new ArrayList<Integer>();
    while (file.hasNext()) {
        String[] tokens = file.nextLine().replaceAll("\\D", ",").replaceAll(",+", ",").split(",");
        for (String token : tokens) {
            if(!token.equalsIgnoreCase("")){
                list.add(Integer.parseInt(token));                  
            }
        }
    }

    for (Integer num : list) {
        System.out.println(num);
    }

}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
Scanner Scanner=new Scanner(新文件输入流(“input.txt”);
打印阵列(扫描仪);
}
公共静态无效打印阵列(扫描程序文件){
列表=新的ArrayList();
while(file.hasNext()){
String[]tokens=file.nextLine().replaceAll(“\\D”,“,”).replaceAll(“,+”,“,”).split(“,”);
for(字符串标记:标记){
if(!token.equalsIgnoreCase(“”){
add(Integer.parseInt(token));
}
}
}
for(整数编号:列表){
系统输出打印项数(num);
}
}

您在哪里声明array1[]?可能尝试在while循环中打印nextInt的结果可能您已经使用
next()
方法生成输出(
12 dsafa 14 daf 11 10 afa 3.5
)。如果您随后将相同的
扫描器
对象(
文件
)传递给此方法,它仍然位于文件的末尾,因此您可能应该首先调用
重置()
。我想这就是我在方法末尾所做的。“你的意思不同吗?”米歇尔·迈克尔迈耶我说了,说得好。但是,我只是在while循环的开头尝试实现file.reset()。输出没有变化。这起作用了。非常感谢。你能解释一下while循环中发生了什么吗?新特性..while循环捕获文件的每一行。然后,它用一个
替换文件中的所有非数字字符,然后用一个逗号替换所有连续的逗号。然后它使用逗号作为分隔符将字符串拆分为一个数组。然后它遍历字符串数组并将所有非空字符串转换为整数,然后存储在
列表中
public static void main(String[] args) throws FileNotFoundException {
    Scanner scanner = new Scanner(new FileInputStream("input.txt"));
    printIntArray(scanner);
}

public static void printIntArray(Scanner file) {
    List<Integer> list = new ArrayList<Integer>();
    while (file.hasNext()) {
        String[] tokens = file.nextLine().replaceAll("\\D", ",").replaceAll(",+", ",").split(",");
        for (String token : tokens) {
            if(!token.equalsIgnoreCase("")){
                list.add(Integer.parseInt(token));                  
            }
        }
    }

    for (Integer num : list) {
        System.out.println(num);
    }

}