Java ArrayList,在一行中获取多种类型(int,String等)的用户输入

时间:2013-09-15 01:28:59

标签: java arrays arraylist user-input

我正在努力提高Java的性能,我遇到的一个问题就是接受用户输入,所有这些都在这一行:

System.out.println("Please input numbers that you would like to work with");

    //Read in user input into ArrayList, taking into account that they may input Strings or anything else.

假设用户输入类似这样的内容

1,2,4,257,狗,兔,7,#

甚至

1 2 4 257狗兔7#

我已经在几个地方看到过如何一次读取一个输入,但我不确定一次读取动态ArrayList的最佳方法。

我真的不关心用逗号或没有逗号的区别,因为逻辑上我认为我知道该怎么做,还没有尝试过,所以真的主要问题如上所述(阅读用户当用户一次输入所有数字时输入动态大小的ArrayList)。谢谢,我不一定要找代码,这不是功课,只是想知道最好的方法。只是逻辑地说明它的工作方式是否有效,但代码很受欢迎。

4 个答案:

答案 0 :(得分:4)

尝试这个简单的例子来打印arraylist值

     import java.util.*;
        class SimpleArrayList{
            public static void main(String args[]){
                List l=new ArrayList();
                System.out.println("Enter the input");
                Scanner input=new Scanner(System.in);

                 String a =input.nextLine();
                 l.add(a);
       // use this to iterate the value inside the arraylist.
      /* for (int i = 0; i < l.size(); i++) {
          System.out.println(l.get(i));
              } */
                    System.out.println(l);

            }

        }

答案 1 :(得分:2)

我认为如何从System.in读取数据有足够的答案,我将采取不同的方法。首先,您应该知道这不是在java中获取数据的主要方式。事实上,在十多年的时间里,我从未使用它。这就是为什么没有完整的准备使用解决方案为我提供结构化数据到一些容器(如ArrayList)。相反,每行只需一个字符串。你必须自己处理这个问题。这个过程称为解析。根据所选语法的复杂性,有几种方法,比如使用解析器生成器,如果它更复杂,或者在更简单的情况下手动编写解析器。我想进入你的第一个建议并将其描述为用可选空格分隔的逗号。对于像这样的语法,类Scanner提供了相当多的支持。可以识别数字,并且几乎自动完成标记化。但是,如果您有更多特定数据,您可能需要一些额外的努力,就像我用动物地图演示的那样,我曾经转换过非常特殊的数据类型。为了足够灵活地解决所有现实世界的问题,没有一个现成的解决方案。只有全面支持才能建立自己的。

  Map<String, Animal> animals = ...
  Scanner scanner = new Scanner("1, 2, 4, 257, dog, rabbit, 7, #").useDelimiter(",");
  while (scanner.hasNext()) {
    if (scanner.hasNextInt()) {
      result.add(scanner.nextInt());
    } else {
      String val = scanner.next();
      if (animals.containsKey(val)) {
        result.add(animals.get(val));
      } else {
        result.add(val);
      }
    }
  }

答案 2 :(得分:1)

一种方法是将输入标记化,然后将其添加到如下数组中:


    Scanner scn = new Scanner(System.in);
    System.out.println("Put in a set: ");
    String input = scn.nextLine();
    System.out.println(input);
    Scanner tokenizer = new Scanner(input);
    tokenizer.useDelimiter(" ");
    ArrayList<Object> arr = new ArrayList<Object>();
    while(tokenizer.hasNext())
    {
        arr.add(tokenizer.next());
        System.out.println(arr.get(arr.size()-1));
    }
    System.out.println(arr);

答案 3 :(得分:0)

您可以尝试使用此代码在arraylist中进行dinamically输入并存储在arraylist中

import java.util.ArrayList;
import java.util.Scanner;

public class HelloWorld
{

 public static void main(String []args){
     Scanner sc=new Scanner(System.in);
     String j;
     ArrayList l=new ArrayList();
     for(int i=0;i<6;i++)
     {  j=sc.nextLine();
         l.add(j);
     }
    System.out.println("Hello World"+l);
 }
}