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我制作了四个扫描仪,希望下一个可以读入摩托车循环。它不起作用。。有什么想法吗?谢谢你的帮助。:)我现在似乎在摩托车零件上得到了一些输出。但汽车部分也有问题。至少有一些变化。。这是我希望的改进。如果有人感兴趣:为每个子类创建不同的方法解决了问题:)