扫描仪用0填充我的数组

时间:2018-03-02 19:21:46

标签: java arrays java.util.scanner

对于我的程序,我需要从一个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] + " " );
    }

这是我的dat文件

12
12
30
12
45
66
78
30
82
19
99
11
11
15
31
18
51
17
12
17

1 个答案:

答案 0 :(得分:-1)

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

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