Java 扫描仪正在用0填充我的阵列

Java 扫描仪正在用0填充我的阵列,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,对于我的程序,我需要从dat文件中读取并将20个数字存储在一个数组中。但是,我的数组中存储的唯一内容是0。我的扫描仪有问题吗?我可以很好地编译这个程序。但是当我打印数组时,唯一打印的是0,即使我清楚地将它们设置为文件上的下一个int。我已经盯着这个程序看了一段时间,没有发现问题所在。谁能告诉我怎么了 这是我的节目 import java.util.Scanner; import java.io.*; import java.util.*; public class DuplicateTe

对于我的程序,我需要从dat文件中读取并将20个数字存储在一个数组中。但是,我的数组中存储的唯一内容是0。我的扫描仪有问题吗?我可以很好地编译这个程序。但是当我打印数组时,唯一打印的是0,即使我清楚地将它们设置为文件上的下一个int。我已经盯着这个程序看了一段时间,没有发现问题所在。谁能告诉我怎么了

这是我的节目

 import java.util.Scanner;
 import java.io.*;
 import java.util.*;
 public class DuplicateTesterAP
 {   
 public static void main(String[] args) {
     //sets up scanner 
    Scanner inFile = null;
    try
    { 
        inFile = new Scanner(new File("prog415h.dat")); 
    }   
    catch(FileNotFoundException e) 
    { 
        System.out.println("File not found!!"); 
        System.exit(0); 
    } 

    //creates array and declares variables
    int[] numbers = new int[20];
    int determine = 0;
    int space = 0;
我想错误就在这里

    //stores values from file into array
    for(int i = 0 ; i<numbers.length; i++){
        numbers[i] = inFile.nextInt();
    }




    //creates a duplicateap object
    DuplicateAP object = new DuplicateAP(numbers);

    //finds the repeating numbers and stores them into an array
    object.findRepeat();

    //header
    System.out.println("The original set of numbers are: ");

    //output for original set of numbers 
    for(int i = 0; i<numbers.length; i++){
        System.out.print(numbers[i] + " " );
    }

您必须检查扫描仪的下一个标记是否为有效的int值,因此循环如下所示:

int i = 0;
// stores values from file into array
while (inFile.hasNextInt()) {
    numbers[i++] = inFile.nextInt();
}

如果该代码使用该输入文件打印所有0,则
new DuplicateAP(numbers)
object.findRepeat()
清除
numbers
数组。既然我们看不到那个代码,我们怎么知道出了什么问题“我想错误就在这里”???为什么要假设调试会告诉你答案?只需调试并检查每个
infle.nextInt()的值尝试将for输出放在for输入的后面,然后进行测试that@user3437460我该怎么做?如果文件中的数字超过20个,这可能会从数组末尾消失。
int i = 0;
// stores values from file into array
while (inFile.hasNextInt()) {
    numbers[i++] = inFile.nextInt();
}