Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文件插入数组_Java_Arrays_Object_If Statement_While Loop - Fatal编程技术网

Java 从文件插入数组

Java 从文件插入数组,java,arrays,object,if-statement,while-loop,Java,Arrays,Object,If Statement,While Loop,这是我的密码: while (scan.hasNext()) { if(scan.next().toLowerCase().equals("car") ) { carsdata[count++] = new Car(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), sca

这是我的密码:

while (scan.hasNext()) 
    {
        if(scan.next().toLowerCase().equals("car") )
        {
            carsdata[count++] = new Car(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
        }
    }

    while (scan2.hasNext()) 
    {
        if(scan2.next().toLowerCase().equals("motorcycle"))
        {
            motorcyclesdata[count++] = new Motorcycle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
        }
    }
    while (scan3.hasNext()) 
    {
        if(scan3.next().toLowerCase().equals("van"))
        {
            vansdata[count++] = new Van(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.next());
        }
    }
    while (scan4.hasNext()) 
    {
        if(scan4.next().toLowerCase().equals("pickup"))
        {
            pickupsdata[count++] = new Pickup(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.nextInt(), scan.next());
        }
    }
由于某种原因,我失去了摩托车的部分,没有执行。我通过将消息框放入该循环进行检查。不起作用。不过,这辆车的工作原理很好

以下是im用于输出到文本区域的代码:

if (e.getSource() == btnMotorcycles)
        {
            vehicleTextArea.setText("");
            int i =0;

            while (motorcyclesdata[i] != null)
            {

                vehicleTextArea.insert("\t" + motorcyclesdata[i].seatMaterial, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].seatColor, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].mainColor, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].price, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].passengers, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].model, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].brand, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].cc, 1);
                vehicleTextArea.insert("\t" + motorcyclesdata[i].engineCap, 1);
                vehicleTextArea.insert("" + motorcyclesdata[i].licenseNo, 1);
                vehicleTextArea.insert("\n", 1);
                i++;
            }
            vehicleTextArea.insert("Licence No \t Engine\t CC \t Brand \t Model \t Passengers \t Price \t Material \t Paint \t Main Color \t Seat Color \t Seat Material", 0);
        }//end if

除了代码的有效性之外,我还忽略了什么

您应该尝试以下方法

while (scan.hasNext()) 
    {
     String scanStr = scan.next();
        if(scanStr.toLowerCase().equals("car") )
        {
            carsdata[count++] = new Car(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
        }

        if(scanStr.toLowerCase().equals("motorcycle"))
        {
            motorcyclesdata[count++] = new Motorcycle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next());
        }

        if(scanStr.toLowerCase().equals("van"))
        {
            vansdata[count++] = new Van(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.next());
        }

        if(scanStr.toLowerCase().equals("pickup"))
        {
            pickupsdata[count++] = new Pickup(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.nextInt(), scan.nextInt(), scan.next());
        }
    }
下面还有一个观察:只需检查您是否希望以与实现相同的方式实现它

    while (scan2.hasNext()) //here you are checking for Sacnner Object 2
        {
            if(scan2.next().toLowerCase().equals("motorcycle"))
            {
//here you are using Scanner Object 1 only make sure you intended to implement it to read it from scanner Object 1 only
                motorcyclesdata[count++] = new Motorcycle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble(), scan.next(), scan.next(), scan.next(), scan.next()); 
            }
        }

汽车和摩托车的代码基本相同(尽管在创建摩托车时可能应该使用
scan2
而不是
scan
)。请阅读:……您是否有4个扫描程序对象读取同一个源,或者甚至有4个单独的源读取属于同一个源的信息?您的while循环没有检查您试图在构造函数中读取的相同扫描程序。@assylias感谢您指出这一点。这仍然没有解决最初的循环没有被进入的问题。@rogue我制作了四个扫描仪,希望下一个可以读入摩托车循环。它不起作用。。有什么想法吗?谢谢你的帮助。:)我现在似乎在摩托车零件上得到了一些输出。但汽车部分也有问题。至少有一些变化。。这是我希望的改进。如果有人感兴趣:为每个子类创建不同的方法解决了问题:)