gpt4 book ai didi

java - 使用扫描仪类读取 txt 文件时会出现 InputMismatchException。我究竟做错了什么?

转载 作者:行者123 更新时间:2023-12-01 23:13:00 25 4
gpt4 key购买 nike

我是 Java 新手,正在遵循 Murach 的 Java 书中的示例。我目前正在学习如何使用记录。我遇到了一个我似乎无法解决的问题。逻辑编译没有任何问题,但是当我尝试运行该程序时,我在“ReadRecords”类的第 23 行收到“INputMismatchException”错误。我用谷歌搜索了这个问题,并在 SOF 中搜索了这个问题,我确实找到了几个解决方案,但它们没有帮助。如果有人能帮我解决这个问题,我将不胜感激。我有这些类(class):

  1. 记录类
  2. ReadRecords 类

记录类代码:

class Records{

public int id; //ID
public String name; //NAME
public String gender; //GENDER

}//CLASS

ReadRecords 类的代码:

import java.util.Scanner;
import java.io.*;

public class ReadRecords {

//METHOD: MAIN
public static void main(String[] args){

Scanner input;
final int MAX_LEN = 25;
int counter = 0;
String filePath = "files/records.txt";

Records[] rec = new Records[ MAX_LEN ];
File file;

try {
file = new File( filePath );
input = new Scanner( file );

do{
rec[counter].id = input.nextInt(); //INT
rec[counter].name = input.next(); //STRING
rec[counter].gender = input.next(); //STRING
++counter;
}
while(rec[counter -1].id != 0);
}
catch ( IOException ex ){
System.out.println( "File access error" );
counter = 0;
}//

System.out.println(rec[0].name);
}//
}//

文本文件“records.txt”

1, Adam, male
2, Bella, female
3, Charlie, male
4, David, male
5, Elizabeth, female
6, Frank, male
7, Ginger, female
8, Harry, male
9, Irene, female
10, Jill, female

谢谢。

enter image description here

最佳答案

您正在搜索的输入是int,但您的第一个位置是string,因此您会收到inputMismatchException,因为扫描仪的默认分隔符是空格,

在您的文本文件中,您有“,”作为分隔符。因此请使用它

input = new Scanner( file ).useDelimiter(", ");

其次,rec[counter].id 会抛出 NullPointerException,因为最初数组中会有 null 值。所以更改如下所示

do{        
Records record=new Records();
record.id = input.nextInt(); //INT
record.name = input.next(); //STRING
record.gender = input.next(); //STRING
rec[counter]=record;
++counter;
}
while(input.nextLine() != null);

关于java - 使用扫描仪类读取 txt 文件时会出现 InputMismatchException。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com