gpt4 book ai didi

java - 跳过命令行参数时出现 ArrayIndexOutOfBoundsException

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:18 24 4
gpt4 key购买 nike

我想知道如何使一个接受命令行参数的程序在没有命令行参数的情况下工作。

这是我需要帮助的最后一个 else if 语句。我怎样才能完成我在这里想做的事情?

P.S 在阅读“可能重复”的帖子的回复时,我没有找到答案。

这是我的代码:

import java.util.Scanner;
import java.io.File;
import java.util.ArrayList;

class LesInformasjon{
public static void main(String[]args) throws Exception{
Scanner fil = new Scanner(new File("informasjon.txt"));
ArrayList<Bil> biler = new ArrayList<>();


while(fil.hasNextLine()){
String line = fil.nextLine();
String ord[] = line.split(" ");
String bilType = ord[0];
String kjennemerke = ord[1];
Bil bil = null;

//Tester typen bil, lager bil og setter inn i ArrayList
if(bilType.equals("EL")){
double batteriKapasitet = Double.parseDouble(ord[2]);
bil = new Elbil(kjennemerke, bilType, batteriKapasitet);
}else if(bilType.equals("LASTEBIL")){
double utslipp = Double.parseDouble(ord[2]);
double nyttevekt = Double.parseDouble(ord[3]);
bil = new Lastebil(kjennemerke,bilType, utslipp, nyttevekt);
}else if(bilType.equals("PERSONBIL")){
double utslipp = Double.parseDouble(ord[2]);
int antGodkjenteSeter = Integer.parseInt(ord[3]);
bil = new Personbil(kjennemerke, bilType, utslipp, antGodkjenteSeter);
}

biler.add(bil);
}



if(args[0].equals("EL")){
for(Bil bil : biler){
if(bil instanceof Elbil){
//if(bil.bilType.equals("EL")){
System.out.println(bil);
System.out.println(" ");
}
}

//System.out.println("Print Elbiler");
}else if(args[0].equals("FOSSIL")){
for(Bil bil : biler){
if(bil instanceof Fossilbil){
//if(bil.bilType.equals("LASTEBIL") || bil.bilType.equals("PERSONBIL")){
System.out.println(bil);
System.out.println(" ");
}
}
}else if(args.length == 0){ //tried else if(args[0] == null as well
for(Bil bil : biler){
System.out.println(bil);
System.out.println(" ");
}
}
}
}

如果你需要其他类(class),我可以给你。但是,他们不需要回答这个问题。

最佳答案

更改 if 语句的顺序。现在,在检查 args.length == 0 之前,会先检查 args[1].equals()。所以当数组为空时,第一次调用会抛出异常。如果你先检查长度,这个问题就可以解决。

更改此结构:

if(args[0].equals("EL")){

}else if(args[0].equals("FOSSIL")){

}else if(args.length == 0){

}

对此:

if(args.length == 0){

}else if(args[0].equals("FOSSIL")){

}else if(args[0].equals("EL")){

}

关于java - 跳过命令行参数时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302956/

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