0

我有一个任务,我必须在一个文件中读取有关 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(). 我不知道错误是什么意思,我需要帮助。提前致谢。

4

2 回答 2

0

尝试将 index++ 添加为 while 循环的最后一行。就像现在一样,你永远不会增加它,所以你只是填充和替换数组中的第一个数字。

于 2016-11-08T18:20:00.553 回答
0

我个人不会使用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;
    }
}
于 2016-11-08T18:30:31.937 回答