0

私のコードはPatientオブジェクトを受け取り、Patientオブジェクトを格納する配列をループし、一致する場合は、ifステートメントにメッセージを出力します。これはすべて問題ありません。しかし、患者がそこにいない場合、患者が順番待ちリストの配列に含まれないたびに、elseセグメントが出力されると思います。私が達成しようとしているのは、「あなたの患者は順番待ちリストに載っていません」が配列にない場合に一度印刷することです。これを行う方法はありますか?私はこれを行う方法を考えようとしましたが、私の脳が理解できない簡単な解決策があると思います。

public int findWaitingPosition (Patient patient)
{
    for (int i=0 ; i <= waitingList.length-1 ; i++)
    {
        if (waitingList[i].equals(patient))
        {
            System.out.println ("The patient is on waiting list: " + i+1);
        }
        else
        {
            System.out.println ("Your patient is not on the waiting list");
        }

    }
4

2 に答える 2

2

一時変数を使用します。また、あなたのメソッドは配列内の患者の位置を返すことになっているようです。このスニペットでは、-1は見つからないことを意味します。

public int findWaitingPosition (Patient patient)
{
    int position = -1;
    for (int i=0 ; i <= waitingList.length-1 ; i++)
    {
        if (waitingList[i].equals(patient))
        {
            position = i;
            break;
        }
    }
    if (position >= 0)
        System.out.println ("The patient is on waiting list: " + i+1);
    else
        System.out.println ("Your patient is not on the waiting list");

    return position;
 }
于 2012-11-23T00:22:14.633 に答える
1

次のようにループを変更できます。

boolean patientNotInList = true;
for (int i=0 ; i <= waitingList.length-1 ; i++)
{
    if (waitingList[i].equals(patient))
    {
        System.out.println ("The patient is on waiting list: " + i+1);
        patientNotInList = false;
        break; //you might want to break the loop once the object is found
    }
}
if(patientNotInList) {
    System.out.println ("Your patient is not on the waiting list");
}
于 2012-11-23T00:18:01.977 に答える