Java 将值赋给数组会引发错误

Java 将值赋给数组会引发错误,java,Java,对不起,标题不好;我很难解释。我正在处理一个格式为make、model、number的文本文件。在文本文件中,有多行这样的内容。当我的程序启动时,将使用我的文件的输入调用构造函数,它读取我的文件的行,同时将值分配给添加到数组中的对象。奇怪的是,这段代码只在某些时候有效。例如,当我有两行justmake、model和number时,它会一直工作。但是,当我添加三行时,它会抛出一个错误。有时,我会重新运行程序或添加第四行,它会工作。我不知道为什么会这样。任何帮助都将不胜感激 ArrayList<

对不起,标题不好;我很难解释。我正在处理一个格式为make、model、number的文本文件。在文本文件中,有多行这样的内容。当我的程序启动时,将使用我的文件的输入调用构造函数,它读取我的文件的行,同时将值分配给添加到数组中的对象。奇怪的是,这段代码只在某些时候有效。例如,当我有两行justmake、model和number时,它会一直工作。但是,当我添加三行时,它会抛出一个错误。有时,我会重新运行程序或添加第四行,它会工作。我不知道为什么会这样。任何帮助都将不胜感激

ArrayList<Car> carArray = new ArrayList<Car>();

public CarDealershipSystem(File carFile, File associateFile) {
    //carFile
    try (BufferedReader br = new BufferedReader(new FileReader(carFile))) {
        String line;
        while((line = br.readLine()) != null) {
            String[] lineArray = line.split(",");
            if (lineArray.length>=3) {
                Car car = new Car();
                car.setMake(lineArray[0]);
                car.setModel(lineArray[1]);
                car.setVin(lineArray[2]);
                carArray.add(car);
            }
            else {
                System.err.printf("%sis not a car.%n", line);
            }
        }   
    }catch(IOException e) {
        e.getLocalizedMessage();
        e.printStackTrace();
    }
ArrayList carArray=new ArrayList();
公共卡管理员系统(文件carFile、文件关联文件){
//卡菲尔
try(BufferedReader br=new BufferedReader(new FileReader(carFile))){
弦线;
而((line=br.readLine())!=null){
String[]lineArray=line.split(“,”);
如果(线性阵列长度>=3){
汽车=新车();
car.setMake(lineArray[0]);
car.setModel(lineArray[1]);
car.setVin(lineArray[2]);
carArray.add(car);
}
否则{
System.err.printf(“%s不是汽车。%n”,第行);
}
}   
}捕获(IOE异常){
e、 getLocalizedMessage();
e、 printStackTrace();
}

每次调用
readLine()
都会消耗一行。您需要存储该行,否则它不会返回。请在此处查看注释代码:

while((br.readLine()) != null) { // <-- read a line and compare it to null
    String line = br.readLine(); // <-- read another line

while (true) {
    String line = br.readLine();
    if (line == null) {
        break;
    }
    // ...
在确定该行是
汽车之前,请确保有正确数量的代币

if (lineArray.length >= 3) {
    Car car = new Car();
    car.setMake(lineArray[0]);
    car.setModel(lineArray[1]);
    car.setVin(lineArray[2]);
    carArray.add(car);
} else {
    System.err.printf("%s is not a car.%n", line);
}

每次调用
readLine()
时,它都会消耗一行。您需要存储该行,否则它不会返回。请在此处查看注释代码:

while((br.readLine()) != null) { // <-- read a line and compare it to null
    String line = br.readLine(); // <-- read another line

while (true) {
    String line = br.readLine();
    if (line == null) {
        break;
    }
    // ...
在确定该行是
汽车之前,请确保有正确数量的代币

if (lineArray.length >= 3) {
    Car car = new Car();
    car.setMake(lineArray[0]);
    car.setModel(lineArray[1]);
    car.setVin(lineArray[2]);
    carArray.add(car);
} else {
    System.err.printf("%s is not a car.%n", line);
}

好的,谢谢你的反馈。我把我的行改成了行,但它仍然在第25行给我一个数组越界异常,这是我的车。setModel()方法,即使在我的文本文件中有model,make,vin。有什么建议吗?再次感谢,好的建议。不幸的是,我的行返回它们不是汽车。正如我所说,我的行是model,make,vin,我使用行。拆分(“,”)但它不起作用。显然,我对编码还不熟悉,所以我想我遗漏了一些明显的东西。仔细看那些说它们不是汽车的行。你没有分享任何一条。但我相信这条信息。现在你的程序没有崩溃。是的,这是我的行:make1,model1,1//我有几行这样的行啊,我想我找到了。它是因为我想把make,model,vin都放在一行上,并且有多行这样的内容。但是这并不是我想要的。消息是“make1,model1,1不是一辆车。”-完全一样吗?如果是这样,试着复制并粘贴到“,”(因为它必须是看起来像“,”的其他字符).好的,谢谢你的反馈。我将行更改为行,但在第25行(我的车)上仍然会出现数组越界异常。setModel()方法,即使在我的文本文件中有model,make,vin。有什么建议吗?再次感谢,好的建议。不幸的是,我的行返回它们不是汽车。正如我所说,我的行是model,make,vin,我使用行。拆分(“,”)但它不起作用。显然,我对编码还不熟悉,所以我想我遗漏了一些明显的东西。仔细看那些说它们不是汽车的行。你没有分享任何一条。但我相信这条信息。现在你的程序没有崩溃。是的,这是我的行:make1,model1,1//我有几行这样的行啊,我想我找到了。它是因为我想把make,model,vin都放在一行上,并且有多行这样的内容。但是这并不是我想要的。消息是“make1,model1,1不是一辆车。”-完全一样吗?如果是这样,试着复制并粘贴到“,”(因为它必须是其他一些看起来像“,”的字符)。