【问题标题】:Cannot store data in the arrayLists? [closed]无法在 arrayLists 中存储数据? [关闭]
【发布时间】:2011-12-09 14:37:54
【问题描述】:

感谢所有帮助人员,但现在根据 Patrick 的以下建议,问题的性质已经改变。循环正在运行,但它似乎没有将输入存储到相应的数组中。数据不断被替换到 Array-Lists 而不是进入 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));

    }
}

【问题讨论】:

  • 帕特里克是谁?在您编辑之前,我们看不到任何内容,因此我们不确定发生了什么。您是否创建了一个新问题而不是编辑以前的问题?您应该添加一个标签来指定您使用的语言。
  • 您能用标点符号来识别句子的开头和结尾吗?

标签: java arraylist user-input


【解决方案1】:

您的代码每次运行时都会重新初始化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));

    }
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 2021-05-17
      • 2013-03-13
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多