java.util.InputMismatchException; null (in java.util.Scanner



我有一项作业,我必须在一个文件中读取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;
    }
}

相关内容

  • 没有找到相关文章

最新更新