使用扫描仪时没有此类元素异常

时间:2014-01-29 03:31:33

标签: java file-io io

我正在尝试读取txt文件。我不断得到“没有这样的元素”错误,我无法理解为什么。我的代码是,

File myFile = new File(input.txt)
Scanner reader = new Scanner(myFile);

for (int i = 0; i<20; i++)
{
    name[i] = reader.nextLine();
    grade[i] = reader.nextInt();
    reader.nextLine();
    rank[i] = reader.nextInt();
    reader.nextLine();
}
reader.close();

这是example of the file format。 我错过了什么?

2 个答案:

答案 0 :(得分:3)

这就是为什么在从文件中读取时使用for循环是一个坏主意;你不知道(相反,你不应该关心大多数意图和目的)你的文件有多大。

将其切换为while循环:

while(reader.hasNext()) {
    // code
}

(不要忘记在循环中提前i。)

如果您的令牌被分成三个精确的倍数,这将读取令牌而不会耗尽要读取的内容。

答案 1 :(得分:1)

绝对不是使用for循环的好选择。

您可以尝试这样的事情:

int i=0;
int i1=0;
int i2=0;
int i3=0;

while(reader.hasNextLine()) {
    i++;
    if(i==1){
        name[i1]=reader.nextLine();
        i1++;
    }
    if(i==2){
        grade[i2]=Integer.valueOf(reader.nextLine());
        i2++;
    }
    if(i==3){
        rank[i3]=Integer.valueOf(reader.nextLine());
        i3++;
        i=0;
    }
}