得到一个没有这样的元素例外不知道为什么

时间:2014-03-25 01:44:45

标签: arrays java.util.scanner

我需要从一个包含3列数据的文件中创建两个数组。这是我到目前为止所做的。

import java.util.*;
import java.io.*;
import java.util.Arrays;

public class ReadFile {

public static void main(String[] args) throws FileNotFoundException {
 Scanner inFile=null;
 try
 {
   inFile = new Scanner (new File("data.txt"));;
 }
 catch (FileNotFoundException e) 
    {
        System.out.println ("File not found!");
        // Stop program if no file found
        System.exit (0);
    }
 int count=0;
 int[] year = new int[40];
 int[] temperature = new int[40];
 inFile.nextInt();
 while (inFile.hasNextInt()) {


   year[count] = inFile.nextInt();
   temperature[count] = inFile.nextInt();
   inFile.nextInt();
   count++;
}


System.out.println(Arrays.toString(year));
System.out.println(Arrays.toString(temperature));
}
}

数据文件如下所示。     1 1950年11月

2  1950  22

3  1950  65

4  1950  103

5  1950  99

6  1950  54

7  1950  109

8  1950  85

9  1950  72

10  1950  120

11  1951  26

12  1951  35

13  1951  59

14  1951  110

15  1951 103

16  1951  49

17  1951  99

18  1951  91

19  1951  85

20  1951  117

21  1953  26

22  1953  41

23  1953  69

24  1953  110

25  1953  100

26  1953  72

27  1953  87

28  1953  102

29  1953  95

30  1953  102

31  1954  33

32  1954  46

33  1954  57

34  1954  106

35  1954  119

36  1954  93

37  1954  57

38  1954  89

39  1954  88

40  1954  92

该文件对我有100%的意义,听起来应该有效,但我得到了这个奇怪的例外。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

每拨打3次inFile.hasNextInt(),您就会致电inFile.nextInt()。而最后一次调用没有下一个整数,因为你位于文件末尾(在9240 1954 92之后)。

你可以将你的指数换一,以解决这个问题,即:

 int[] year = new int[40];
 int[] temperature = new int[40];
 while (inFile.hasNextInt()) {

   inFile.nextInt(); //the throw away value
   year[count] = inFile.nextInt();
   temperature[count] = inFile.nextInt();
   count++;
}