2016-09-21 7 views
1

私はarraylistからランダムなオブジェクトを取得しようとしています。無作為は、変数が真であるとして入手可能なarraylistのオブジェクトの中にあるべきです。arraylist固有の変数からランダムオブジェクトを取得

今すぐ、アライリスト全体からランダムにアテンダントを得ます。

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  
    } 

I型になっています何:

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

このメソッドは次のとおりです。私はちょうど これは行がある、それは真(変数)であること参加者に制限を指定する必要がありますか? 私の乗務員はそのようなものです:

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の中にはfalseがあります – Kavi

+1

描画された出席者のために利用可能なフィールドをチェックし、falseの場合は別のものを描画します(whileループ) – porgo

答えて

4

だこの機能を追加

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

原因を使用することができます「yEs」を実行します。希望が役立ちます。何かが間違っている場合教えてください

+1

ダウハイルを使うことができます。 – Asoub

+0

@Asoubええ、思い出してくれてありがとう –

+0

これはうまくいきません。利用可能なアテンダントが返されず、無限にループする可能性があります – brandall

関連する問題