我的程序从txt文件读取,然后将txt信息转换为car对象并将它们添加到arraylist。
try {
String filePath = "car.txt";
File f = new File(filePath);
Scanner sc = new Scanner(f);
List<Car> car = new ArrayList<Car>();
while(sc.hasNextLine()){
String newLine = sc.nextLine();
String[] details = newLine.split(" ");
String brand = details[0];
String model = details[1];
double cost = Double.parseDouble(details[2]);
Car c = new Car(brand, model, cost);
Car.add(c);
}
但是,如果txt文件中的一行不包含这三个组件,那么它会崩溃。如何检查该行是否包含所有3个组件,如果不打印消息则终止?
堆栈追踪 -
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Main.loadPerson(Main.java:31)
at Main.main(Main.java:12)
答案 0 :(得分:0)
您需要检查length
的详细信息是3,如果没有退出,如下所示:
String[] details = newLine.split(" ");
if(details.length != 3) {
System.out.println("Incorrect data entered !! Please try again !!! ");
return;
} else {
String brand = details[0];
String model = details[1];
double cost = Double.parseDouble(details[2]);
Car c = new Car(brand, model, cost);
Car.add(c);
}
答案 1 :(得分:0)
您可以通过以下方式检查返回数组的长度:
int count = details.length;
然后决定做什么
答案 2 :(得分:0)
在访问元素之前检查长度,
尝试模式\\s+
以避免修剪空格,代码中有一个拼写错误,其中将Car添加到汽车列表
while (sc.hasNextLine()) {
String newLine = sc.nextLine();
String[] details = newLine.split("\\s+");
if (details.length == 3) {
String brand = details[0];
String model = details[1];
double cost = Double.parseDouble(details[2]);
Car c = new Car(brand, model, cost);
car.add(c);
} else {
System.out.println("Invalid input");
}
}
答案 3 :(得分:0)
如果文件不包含3个组件,则Transparent
将为空。请改用它。
details