私のプロジェクトでは、停止しない限り、ユーザーが1つのメソッドで必要な名前を入力するための配列リストがあります。次に、別のメソッドで、入力したばかりの値を再度呼び出す必要があるため、名前ごとにさらに情報を入力できます。
例:
- 名前を入力してください:
- 名前:ボブ
- 名前:ジョー
name: これを停止すると、別のメソッドがトリガーされて詳細情報が表示されます:
bob: 年齢を入力: 住所を入力:
ジョー: 年齢を入力してください: 住所を入力してください:
ただし、現在、arraylist は正しく出力されておらず、特定の名前が繰り返されていますが、他の名前は 2 番目の方法では表示されません。また、2 番目の方法のループは終了しません。入力した名前の情報を入力しますが、「name:」というプロンプトが表示され続け、実際の arraylist 値は表示されません。ループに問題があると思われますが、修正方法がよくわかりません。また、ラッパーを使用して配列リストに値を入れる方法に問題があるのではないかと思いましたが、それを修正する方法がわかりません。
2 番目の方法では、2 番目の方法で別のカウンターを使用して配列リスト内の順序を追跡するためにカウンター変数を交換しようとしましたが、違いはないようです。最初の方法では、前の 2 つのオプション if ループ内の for ループ カウンターである while (!input.equals("Stop")) を使用して、ループを別のブール型の while ループと交換しようとしました。および上記のいくつかの組み合わせ。
ここに私のコードがあります
Scanner console = new Scanner(System.in);
private ArrayList<Directory> nameList; //i have to use object oriented programming to store values in the Directory Class
public int i;
最初の方法:
private void addName()
{
Scanner LocalInput = new Scanner(System.in);
Directory buffer = null;
String ID = null;
System.out.println("Enter Station Designations Below, Enter Stop to quit");
boolean breaker = false;
while(breaker ==false)
{
System.out.print("Name: ");
ID = (LocalInput.nextLine());
if(ID.equals("Stop"))
breaker = true;
else
buffer = new Directory(ID);
nameList.add(buffer);
}
}
2番目の方法:
private void getInfo()
{
Scanner LocalInput = new Scanner(System.in);
Directory buffer;
buffer = nameList.get(i);
double age; String address;
System.out.println("Enter Temperatures below...");
System.out.println("" + nameList.get(i));
for (i = 0; i < nameList.size(); i++)
{
System.out.println("Name: " + buffer.GetID()); //there's a getter and setter in the Directory class
System.out.println( "Age:\t");
age = LocalInput.nextDouble();
System.out.print( "Address:\t");
address = LocalInput.nextLine();
buffer= new Directory(age, address);
nameList.add(buffer);
}
}