从数组列表中获取随机对象特定变量

问题描述:

我试图从数组列表中获取一个随机对象。随机应该在数组列表中的对象中,其变量可用为真。从数组列表中获取随机对象特定变量

现在它从整个列表中获得一个随机值班员。我只需要它指定一个限制服务员为真(变量) 这是行:

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:对不起,我的英语。这是我的第三语言

+0

这是什么意思**指定服务员的真实限制(可变)** –

+0

我的服务员有一个布尔参数我需要那些是真实的。一些在arraylist中是虚假的 – Kavi

+1

检查可用字段的drawed参加,如果它的false,绘制另一个(while循环) – porgo

在话务员类,添加此功能

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); 

原因可能做“Es”。希望有所帮助。告诉我是否有问题

+1

你可以使用dowyile。 – Asoub

+0

@Asoub是的,感谢提醒 –

+0

这将无法正常工作。它不返回可用的服务员,并且可能无限循环 – brandall