我需要从关于汽车的文本文件(类型,注册号等)打印信息,并且不能让它打印汽车座位数的值。其余信息在打印到终端时工作正常。
运行程序时,我们使用命令行参数。
文本文件如下所示:
EL EK43536 31.5
LASTEBIL SR87875 452.5 2550.4
PERSONBIL AR34345 119.5 8
EL EL14545 60
PERSONBIL DK65437 135.7 4
最后一个PERSONBIL的结果如下:
Type motorvogn: PERSONBIL
Registreringsnummer: DK65437
CO2-utslipp maalt i g/km: 135.7
Antall godkjente seter: 0
我想问题是int ord4 = 0和带有ord4的if语句。它应打印出8和4的座位数,但在运行时它只显示0.文本文件的其余部分打印出来是正确的。
private static ArrayList<Bil> filleser(String filnavn){
String linje = "";
ArrayList<Bil> bilene = new ArrayList<Bil>();
try{
BufferedReader lesFil = new BufferedReader(new FileReader(filnavn));
while((linje = lesFil.readLine()) != null){
String[] split = linje.split(" ");
String type = split[0];
String ord = split[1];
double ord2 = 0;
double ord3 = 0;
int ord4 = 0;
if(split.length > 2){
ord2 = Double.parseDouble(split[2]);
} if(split.length > 3){
ord3 = Double.parseDouble(split[3]);
} if (split.length > 4){
ord4 = Integer.parseInt(split[4]);
}
if(type.equals("BIL")){
Bil bil = new Bil(split[0], ord);
bilene.add(bil);
} else if (type.equals("EL")){
Elbiler bil = new Elbiler(type, ord, ord2);
bilene.add(bil);
} else if (type.equals("FOSSIL")){
Fossilbiler bil = new Fossilbiler(type, ord, ord2);
bilene.add(bil);
} else if (type.equals("LASTEBIL")){
Lastebiler bil = new Lastebiler(type, ord, ord3, ord2);
bilene.add(bil);
} else if (type.equals("PERSONBIL")){
Personbiler bil = new Personbiler(type, ord, ord2, ord4);
bilene.add(bil);
} else {
System.out.println("Error, ikke gyldig bil.");
}
}
lesFil.close();
}
catch(Exception e){
System.out.println("Error: Noe galt med fil eller no'.");
System.exit(0);
}
return bilene;
}
答案 0 :(得分:0)
你没有将ord3传递给PERSONBIL ...这是你在文本行上的第四个标记。相反,您传递的是ord4,这是一个不存在的第五个令牌。
更改
Personbiler bil = new Personbiler(type, ord, ord2, ord4);
到
Personbiler bil = new Personbiler(type, ord, ord2, ord3 );
如果您的方法签名需要int,请使用:
Personbiler bil = new Personbiler(type, ord, ord2, (int)ord3);