从arraylist特定变量中获取随机对象

时间:2016-09-21 09:39:02

标签: java arraylist

我试图从arraylist中获取一个随机对象。随机应该是arraylist中的对象,其变量可用为true。

现在它从整个arraylist得到一个随机的服务员。我只是需要它来指定服务员的真实限制(可变) 这就是这条线:

return myAtt.get(randAtt.nextInt(myAtt.size()));

这是方法:

public static Attendant  askForAtt() {
        Scanner scanAtt = new Scanner(System.in);
        Random randAtt = new Random();
        //Attendant  asnAtt = null;
        System.out.println("Do you require an Attendant ? Y or N");
        String response = scanAtt.next();
        if ((response.equals("y")) || (response.equals("yes")) || (response.equals("Yes")) || (response.equals("Y"))) {
            // Cars.setAssignedTo(myAtt.get(randAtt.nextInt(myAtt.size())));
            return myAtt.get(randAtt.nextInt(myAtt.size()));

        } else if ((response.equals("n")) || (response.equals("no")) || (response.equals("No")) || (response.equals("N"))) {
            return new Attendant ("User");
        }
        return new Attendant ("User");    //If input is neither Yes nor No then return new Attendant    
    }

我应该输入什么? 我的服务员就是这样:

public Attendant(int staffNum, String id, boolean available, attNm name, Cars assign) {
        this.staffNum = staffNum;
        this.id = id;
        this.available = available;
        this.name = name;
        this.assign = assign;
    }

PS:抱歉我的英文。这是我的第三语言

1 个答案:

答案 0 :(得分:4)

在Attendant类中,添加此功能

public boolean isAvailable(){
   return available;
}

然后

public static Attendant  askForAtt() {

    ...

    if ((response.equals("y")) || (response.equals("yes")) || (response.equals("Yes")) || (response.equals("Y")) && someoneIsAvailable()) {

        ArrayList<Attendant> temp = getAvailableAttendants();
        Attendant attendant = temp.get(randAtt.nextInt(temp.size()));
        return attendant;

    } 

   ...   
}

public boolean someoneIsAvailable(){
    for(int i = 0; i<myAtt.size(); i++){
        if(myAtt.get(i).isAvailable()){
           return true;
        }
    }
    return false;
}

public ArrayList<Attendant> getAvailableAttendants(){
    ArrayList<Attendant> availableAtt = new ArrayList<>();
    for(int i = 0; i<myAtt.size(); i++){
        Attendant att = myAtt.get(i)
        if(att.isAvailable()){
           availableAtt.add(att);
        }
    }
    return availableAtt;
}

此外,您可以使用

String.equalsIgnoreCase(String);

因为在你的陷阱中,用户可以做到&#34; yEs&#34;。希望有所帮助。如果出现问题,请告诉我