对于我的项目,我有一个数组列表供用户在一种方法中输入他们想要的任何名称,只要它不停止。然后在一个单独的方法中,我刚刚输入的值必须再次调用,所以我可以为每个名称输入更多信息。
例子:
- 输入姓名:
- 姓名:鲍勃
- 姓名:乔
名称:停止这会触发另一种方法来提示更多信息:
鲍勃:输入年龄:输入地址:
乔:输入年龄:输入地址:
但是,现在,arraylist 没有正确打印出来,并且我得到了某些名称的重复,而其他名称没有出现在第二种方法中。此外,第二种方法中的循环不会结束。我输入了我输入的名称的信息,但我一直收到提示“名称:”并且没有实际的 arraylist 值。我怀疑我的循环有问题,但我不太知道如何修复它?我还认为问题可能与我如何使用包装器将值放入数组列表有关,但我不知道如何解决这个问题。
在第二种方法中,我尝试用第二种方法中的单独计数器交换计数器变量以跟踪数组列表中的顺序,但这似乎没有什么区别。在第一种方法中,我尝试用不同的布尔while循环交换循环,直接向上while(!input.equals(“Stop”)),前两个选项内部的for循环计数器,if循环,以及上述的一些组合。
这是我的代码
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);
}
}
第二种方法:
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);
}
}