我有一项作业,我必须在一个文件中读取1980年至2006年的飓风信息。我不知道错误是什么。我有这样一段代码:
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Hurricanes2
{
public static void main(String[] args)throws IOException
{
//declare and initialize variables
int arrayLength = 59;
int [] year = new int[arrayLength];
String [] month = new String[arrayLength];
File fileName = new File("hurcdata2.txt");
Scanner inFile = new Scanner(fileName);
//INPUT - read data in from the file
int index = 0;
while (inFile.hasNext()) {
year[index] = inFile.nextInt();
month[index] = inFile.next();
}
inFile.close();
这只是第一部分。但是在有while语句的部分中,year[index] = inFile.nextInt()
有一个错误。我不知道这个错误意味着什么,我需要帮助。
尝试添加index++作为while循环的最后一行。就像现在一样,您从不增加它,所以您只填充和替换数组中的第一个数字。
我个人不会使用Scanner()
,而是Files.readAllLines()
。如果有某种分隔字符来分割飓风数据,可能会更容易实现。
例如,假设你的文本文件是:
1996, August, 1998, September, 1997, October, 2001, April...
如果我所做的假设成立,你可以做以下事情:
Path path = Paths.get("hurcdata2.txt");
String hurricaineData = Files.readAllLines(path);
int yearIndex = 0;
int monthIndex = 0;
// Splits the string on a delimiter defined as: zero or more whitespace,
// a literal comma, zero or more whitespace
for(String value : hurricaineData.split("\s*,\s*"))
{
String integerRegex = "^[1-9]d*$";
if(value.matches(integerRegex))
{
year[yearIndex++] = value;
}
else
{
month[monthIndex++] = value;
}
}