首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java ArrayList of ArrayList Scanner

Java ArrayList of ArrayList Scanner
EN

Stack Overflow用户
提问于 2014-10-13 04:46:56
回答 5查看 509关注 0票数 0

我试图将用户输入存储到ArrayList of ArrayList中。

代码语言:javascript
复制
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();

例如,将其存储为[[1,2,3],[4,5],[6,1,8]]

下面是我的代码,

代码语言:javascript
复制
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a set of numbers:");
    String line = input.nextLine();
    String[] numbers = line.split(" +");

    ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> a1 = new ArrayList<Integer>();

    for(int i=0; i<numbers.length; i++) {
        a1.add(new Integer(numbers[i]));

    }
    a.add(a1);

但是当我把它输入终端时,它就变成了[[1,2,3,4,5,6,1,8]]

提前谢谢你!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-10-13 05:08:54

从上面的评论,我有点清楚,你想做什么。

你在终点站输入了1 2 3 4 5 6 1 8。在您的程序中,您在-上使用了split,所以我提供了一些解决问题的指南。

首先,在-上拆分输入,使数组分离

代码语言:javascript
复制
String[] numbersArray = line.split("-"); 
//e.g. input 1 2 3 + 4 5 6 + 1 8
//here you will get numbersArray as [1 2 3,4 5 6,1 8]
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();

现在,要分离内部数组的各个元素,请使用for循环。

代码语言:javascript
复制
for(int i=0; i<numbersArray.length; i++) {

    String[] numbers= numbersArray[i].split(" "); //split on " "
    //here you will get [1,2,3] for first iteration and 2nd [4,5,6], last [1,8]

    ArrayList<Integer> a1 = new ArrayList<Integer>();
    for(int j=0; j<numbers.length; j++) {
        a1.add(new Integer(numbers[j]));
        //here adding inner array list elements

    }
    //add to main array list 
    a.add(a1);
}
票数 1
EN

Stack Overflow用户

发布于 2014-10-13 04:58:15

尝试这种类型的i/p和下面的代码。

代码语言:javascript
复制
i/p : 1 2 3-4 5-6 1 8

String[] list= line.split("-");

ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
for(int i=0; i<list.length; i++) {

        String[] number= line.split(" ");
        ArrayList<Integer> a1 = new ArrayList<Integer>();
        for(int i=0; i<numbers.length; i++) {
            a1.add(new Integer(numbers[i]));

        }
        if(a1.length>0)
           a.add(a1);
}
票数 1
EN

Stack Overflow用户

发布于 2014-10-13 04:56:46

我认为这是由于您试图在控制台上输入错误的输入,因为当我硬编码理想的输入到您的ArrayList时,它会打印出您预期的结果。下面是我编写的示例代码:

代码语言:javascript
复制
private static void doPrint(){
    List<List<Integer>> sample=new ArrayList<List<Integer>>();
    ArrayList<Integer> a1 = new ArrayList<Integer>();
    a1.add(12);
    a1.add(23);
    ArrayList<Integer> a2 = new ArrayList<Integer>();
    a2.add(22);
    a2.add(28);
    sample.add(a1);
    sample.add(a2);

    System.out.println(sample);
}

这是输出:

代码语言:javascript
复制
[[12, 23], [22, 28]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26333027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档