无法在arrayLists中存储数据?

时间:2011-12-09 14:37:55

标签: java arraylist user-input

感谢所有帮助人员,但现在问题的性质已根据Patrick的建议改变了。循环正在运行,但它似乎没有将输入存储到相应的数组。数据不断被替换到数组列表而不是进入Array-List的下一个位置任何建议?

import java.util.ArrayList;
import java.util.Scanner;
public class Arrray {
    public static void main(String [] args){

        ArrayList<String> names;
        ArrayList<String> addr;

        do {
            names = new ArrayList<String>();
            addr = new ArrayList<String>();
            Scanner userInput = new Scanner(System.in);
            System.out.println("Name and Adreess are: " + names.size() + "**"
                    + addr.size());
            System.out.println("please Enter Your Name :");
            names.add(userInput.next());
            System.out.println("please enter your Address  :");
            addr.add(userInput.next());

            System.out.println("Do you want to add another entry? :(y/n)" );
            String ans =userInput.next();  // get the value from the user using scanner class
            if(ans.equals("n") || ans.equals("N"))
                break;

           } while (true);
        int n = names.size();
        int a = addr.size();
        for(int i =0; i<n && i<a; i++ )
            System.out.println("Name and address are as below:  "+ names.get(i)+"**"+ addr.get(i));

    }
}

2 个答案:

答案 0 :(得分:2)

您的代码每次运行时都会重新初始化ArrayList。你需要把它带出循环。

import java.util.ArrayList;
import java.util.Scanner;
public class Arrray {
    public static void main(String [] args){

        ArrayList<String> names = new ArrayList<String>();
        ArrayList<String> addr = new ArrayList<String>();

        do {
            //names = new ArrayList<String>(); take this out
            //addr = new ArrayList<String>();  // take this out
            Scanner userInput = new Scanner(System.in);
            System.out.println("Name and Adreess are: " + names.size() + "**"
                    + addr.size());
            System.out.println("please Enter Your Name :");
            names.add(userInput.next());
            System.out.println("please enter your Address  :");
            addr.add(userInput.next());

            System.out.println("Do you want to add another entry? :(y/n)" );
            String ans =userInput.next();  // get the value from the user using scanner class
            if(ans.equalsIgnoreCase("n"))
                break;

           } while (true);
        int n = names.size();
        int a = addr.size();
        for(int i =0; i<n && i<a; i++ )
            System.out.println("Name and address are as below:  "+ names.get(i)+"**"+ addr.get(i));

    }
}

答案 1 :(得分:1)

每次循环时都会创建一个新的ArrayList。这意味着最终数组将只包含最后一个元素。 在循环之前创建它们。