我是 java 新手,使用扫描仪类读取文件时遇到问题。
我的目标是阅读以下 .txt 文件:
3
Emmalaan 23
3051JC Rotterdam
7 rooms
price 300000
Javastraat 88
4078KB Eindhoven
3 rooms
price 50000
Javastraat 93
4078KB Eindhoven
4 rooms
price 55000
文件顶部的“3”应读取为一个整数,表示该文件有多少房屋。“3”之后的以下四行确定一宫。
我尝试使用类 portefeuille 中的读取方法读取此文件:
public static Portefeuille read(String infile)
{
Portefeuille returnvalue = new Portefeuille();
try
{
Scanner scan = new Scanner(new File(infile)).useDelimiter(" |/n");
int aantalwoningen = scan.nextInt();
for(int i = 0; i<aantalwoningen; ++i)
{
Woning.read(scan);
}
}
catch (FileNotFoundException e)
{
System.out.println("File could not be found");
}
catch (IOException e)
{
System.out.println("Exception while reading the file");
}
return returnvalue;
}
Woning 类中的 read 方法如下所示:
public static Woning read(Scanner sc)
{
String token_adres = sc.next();
String token_dr = sc.next();
String token_postcd = sc.next();
String token_plaats = sc.next();
int token_vraagPrijs = sc.nextInt();
String token_kamerstxt = sc.next();
String token_prijstxt = sc.next();
int token_kamers = sc.nextInt();
return new Woning(adresp, token_vraagPrijs, token_kamers);
}
当我尝试执行以下代码时:
Portefeuille port1 = Portefeuille.read("woningen.txt");
我收到以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at Portefeuille.read(Portefeuille.java:48)
at Portefeuille.main(Portefeuille.java:112)
但是,如果我使用 Woning 类中的 read 方法以字符串格式读取一个地址:
Emmalaan 23
3051JC Rotterdam
7 Rooms
price 300000
它工作正常。
我试图将 .txt 文件更改为只有一个地址,顶部没有“3”,以便它的格式与应该工作的地址完全一样。但是当我从 Woning 类调用 read 方法时,它仍然给我错误。
谁能帮我解决这个问题?
谢谢!