0

患者とその病気の重症度をシミュレートするプログラムを作成しています。

あるクラスの異なるインスタンスを別のクラスに追加するのに問題があります。

なぜか、while ループを使用すると、最終的に 1 つのインスタンスしか作成されません。

これが私のコードです:

 while(myScan.hasNext()){

      String line = myScan.nextLine();
      String [] storage = line.split(",");
      int severity = Integer.parseInt(storage[1]);

      Patient x = new Patient(storage[0],severity);
      Priority.add(x);

      }

各インスタンスを個別に作成して「Priority」クラスを出力すると、正常に動作します。ただし、while ループを使用すると、上書きされているかのように、最後のインスタンスのみが出力されます。

例えば:

Patient p1 = new Patient(name1,1);
Patient p2 = new Patient(name2,2);
Patient p3 = new Patient(name3,3);

これはうまくいきます。ただし、while ループを使用してファイルから読み取る場合はそうではありません。p3のみを印刷します。

4

2 に答える 2

0

ストレージ (array/linkedList) として定義された Priority が表示されません。そのため、データの患者インスタンスを格納する変数を作成する必要があります。

ArrayList<Patient> items = new ArrayList<Patient>();
while(myScan.hasNext()){

  String line = myScan.nextLine();
  String [] storage = line.split(",");
  int severity = Integer.parseInt(storage[1]);

  Patient x = new Patient(storage[0],severity);
  items.add(x);

  }

これでアイテムには作成された患者が含まれているはずです。私はそれがJavaであることを願っています:D

于 2013-07-14T22:06:05.687 に答える
0

これは、構造を繰り返し処理していないためだと思います。同じ患者 x を何度も使用しているだけです。

リストまたは患者配列を使用して、異なる患者を作成する必要があります。
それとも、そのために優先度を使用しますか? はいの場合、この「リスト」から別の患者を取得できるはずです。

編集:例:

LinkedList<Patient> listOfPatients = new LinkedList<>();
while(myScan.hasNext){
    .
    .
    .
    Patient x = ... ;
    listOfPatients.add(x);
}
Patient p1=listOfPatients.getAt(0);
Patient p2=listOfPatients.getAt(1);
.
.
.

簡単な例です。お役に立てば幸いです。

于 2013-07-14T22:06:11.610 に答える