这是我的portefeuille,应该包含所有阅读'woningen'
//read file
public static Portefeuille read(String infile) {
Portefeuille result = new Portefeuille();
FileReader fileString;
try{
fileString = new FileReader(infile);
Scanner sc = new Scanner(fileString);
int amount = sc.nextInt();
for(int i = 0; i < amount; i++)
result.voegToe(readWoning.read(sc));
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
return result;
}
这使用了readWoning.read(sc),它是:
public class readWoning {
public static Woning read(Scanner ac) {
String toestand = ac.next();
Adres adres = Adres.read(ac);
int kamers = ac.nextInt();
ac.next(); String aard = ac.next();
int price = ac.nextInt();
System.out.println(toestand + " " + adres + " " + kamers + " " + price);
if("huurprijs".equals(aard)) {
return new HuurWoning(adres,kamers,price,toestand);
}
return new KoopWoning(adres,kamers,price,toestand);
}
}
这使用Adres.read(ac);这是:
public static Adres read(Scanner sc) {
sc.nextLine();
String street = sc.next();
String number = sc.next();
String code = sc.next();
String place = sc.next();
return new Adres(street, number, code, place);
}
我想读的文件是:
3
TE KOOP:
Emmalaan 23
3051JC Rotterdam
7 kamers
vraagprijs 300000
VERKOCHT:
Emmalaan 25
3051JC Rotterdam
5 kamers
koopprijs 280000
TE HUUR:
Javastraat 88
4078KB Eindhoven
3 kamers
huurprijs 500
其中第一个数字表示文件中描述了多少个woningen。 第一行显示了胜利发生的'toestand'(状态),可能是:(出售,出租等)。 第2行和第3行表示胜利的地址。 第4行表示胜利内的房间数量 最后一行表示胜利的价格。
现在我的问题是:
由于toestand,我无法让Java正确读取我的文件:“TE KOOP:” 我在readWoning中使用了String toestand = ac.nextLine()但它只输出了一些空格而String toestand = ac.next();只输出“TE” 如果我的问题不够具体,请告诉我。
输出我得到:
TE Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE Javastraat 88, 4078KB Eindhoven 3 500
null
null
null
我想要的输出:
TE KOOP: Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE HUUR: Javastraat 88, 4078KB Eindhoven 3 500
提前致谢,
答案 0 :(得分:0)
如果您使用:
ac.nextLine();
String toestand = ac.nextLine();
然后toestand应该包含TE KOOP:
。 read
然后跳过下一行并开始在street
查找3051JC
。从sc.nextLine();
:
read
public static Adres read(Scanner sc) {
String street = sc.next();
String number = sc.next();
String code = sc.next();
String place = sc.next();
return new Adres(street, number, code, place);
}
你应该得到:
TE KOOP: Emmalaan 23, 3051JC Rotterdam 7 300000
VERKOCHT: Emmalaan 25, 3051JC Rotterdam 5 280000
TE HUUR: Javastraat 88, 4078KB Eindhoven 3 500