我正在开发一个向用户借车的应用程序,用户可以从可用车队中进行选择。不幸的是,当输入注册号并提供借用人的姓名时,程序将该人分配给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。

您需要在列表中搜索注册号。由于fleet2List<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/

10-10 16:44