编辑。谢谢。
我有一系列"普通"车辆和"大型"车辆。我有一个任务,要求我将它们分开,为一个更大的应用程序做出贡献。 一个数组用于大型车辆,一个用于普通车辆,其中包含每个元素的所有信息。数组列表是不允许的,因为我的老师正在教我们基础知识。
数组示例
27723 4/09/61 large 7337
28507 22-02-1983 large 7055
28558 1/05/70 normal 3518
//On button press
//recieve single item from array from main and test it
//array in main will be looped for all elements.
public String loadVehicle(Vehicle v) {
String res = Constants.OK;
boolean normBool = false;
boolean largeBool = false;
//if both arrays are full , stop the method call in the main form
if (normBool && largeBool){return Constants.ERROR;}
//if vehicle size is normal, fill the normal veh array
if(v.getSize().equals(Constants.NORMAL_SIZE))
{
for(int i = 0; i<normalVehicles.length; i++)
{
//if norm veh array element is null, add the appropriate value to it
if(normalVehicles[i] == null){normalVehicles[i] = v;}
else{normBool = true;}
}
}
//if veh size is large put it in the large veh array
else if(v.getSize().equals(Constants.LARGE_SIZE))
{
for(int iL = 0; iL<largeVehicles.length; iL++)
{
if(largeVehicles[iL] == null){largeVehicles[iL] = v;}
else{largeBool = true;}
}
}
return res;
}//end method
似乎你也不能使用内置的LinkedList类,然后这样做:
在车辆类中添加以下代码:
class Vehicle(){ //YOUR OTHER PIECES OF CODES ... private static Vehicle firstLargeVehicle; private Vehicle nextLargeVehicle; private int index; public void setIndex(int index){ this.index = index; if(index == 0) Vehicle.firstLargeVehicle = this; } public int getIndex(){ return index; } public void setNextLargeVehicle(Vehicle nextLargeVehicle){ this.nextLargeVehicle = nextLargeVehicle; } public Vehicle getNextLargeVehicle(){ return nextLargeVehicle; } public addLargeVehicle(Vehicle newVehicle){ this.nextLargeVehicle = newVehicle; newVehicle.setIndex(index + 1); } public getListSize(){ Vehicle lastOne = this; while (lastOne.getNextLargeVehicle() != null){ lastOne = lastOne.getNextLargeVehicle(); } return lastOne.getIndex() + 1; } public static Vehicle[] largeVehiclesToArray(){ Vehicle[] result = new Vehicle[firstLargeVehicle.getListSize()](); Vehicle pointer = firstLargeVehicle; for (int counter = 0; pointer != null; counter ++){ result[counter] = pointer; pointer = pointer.getNextLargeVehicle(); } return result; } }
在主循环中,执行类似于以下代码的操作:
Vehicle vehicle = null; for(Vehicle newVehicle : allVehicles) { if (newVehicle.isLarge()){ if (vehicle == null) { vehicle = newVehicle; vehicle.setIndex(0); }else{ vehicle.addLargeVehicle(newVehicle)); } } } Vehicle[] largeVehicles = Vehicle.largeVehiclesToArray();
同样的故事也适用于普通车辆。 有什么问题吗?
你可以像这样编写循环:
for(int i = 0; i < normalVehicles.length; i++)
{
if(normalVehicles[i] == null)
{
normalVehicles[i] = v;
break;
}
}
// if last slot isn't null then it's full
normBool = normalVehicles[normalVehicles.length-1] != null;