我正在开发一个向用户借车的应用程序,用户可以从可用车队中进行选择。不幸的是,当输入注册号并提供借用人的姓名时,程序将该人分配给arrayList中已添加的第一个条目。我不确定如何获得程序来将借方分配给具有给定注册号的项目。谁能指出我犯的错误?
设置借方的方法:
public void askBorrower(){
boolean loop = false;
while(!loop){
String bName = Console.askString("Borrower's Name: ");
while(bName.isEmpty()){
System.out.println("Borrower's name cannot be empty!");
bName = Console.askString("Borrower's Name: ");
}
while(!bName.matches("[a-zA-Z]+")){
System.out.println("Letters only allowed!");
bName = Console.askString("Borrower's Name: ");
}
setBorrower(bName);
loop = true;
boolean newAvailability = false;
setAvailability(newAvailability);
System.out.println("You have successfully borrowed a car.");
}
}
在主类切换触发借入过程中:
case 4:
System.out.println("Borrowing a car:");
System.out.println("");
sCar = new StaffCar();
sCar.askRegNo();
sCar = (StaffCar)fleet2.find(sCar.getRegNo());
if(sCar == null){
System.out.println("Car not in the fleet, please try again");
}
else if(sCar.availability == false){
System.out.println("Car is out on loan currently");
}
else{
sCar.askBorrower();
}
break;
并找到方法:
public StaffCar find(String regNo){
int index = regNo.indexOf(regNo);
if(index == -1){
return null;
}
else{
return fleet2.get(index);
}
}
我将不胜感激任何意见或建议。
最佳答案
int index = regNo.indexOf(regNo);
正在注册编号字符串中搜索注册编号,该字符串将始终返回0。
您需要在列表中搜索注册号。由于
fleet2
是List<StaffCar>
,因此不能使用indexOf(regNo)
通过其注册号定位汽车。您必须自己遍历List
。for (StaffCar car : fleet2) {
if (car.getRegNo().equals(regNo))
return car;
}
return null;
关于java - 更改arraylist中项目的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30853865/