我需要从一个包含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%的意义,听起来应该有效,但我得到了这个奇怪的例外。任何人都可以帮助我吗?
答案 0 :(得分:0)
每拨打3次inFile.hasNextInt()
,您就会致电inFile.nextInt()
。而最后一次调用没有下一个整数,因为你位于文件末尾(在92
中40 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++;
}