首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将用户输入存储在Arraylist<String>中,直到换行

将用户输入存储在Arraylist<String>中,直到换行
EN

Stack Overflow用户
提问于 2015-09-03 17:10:16
回答 2查看 801关注 0票数 0

该问题需要为每个attribute.Ex输入不同的值:

颜色:黑白

水冷热介质

风强风弱

我做了字符串的ArrayList of ArrayList来存储no这样的东西。在每个属性的值不是下一个,用户输入黑白,在命中新行时,程序必须开始获取下一个属性的值(冷热介质).The no。我在这里遵循了一些(几乎相关的)答案,并编写了以下代码:

代码语言:javascript
运行
复制
ArrayList<ArrayList<String>> attributes = new ArrayList<ArrayList<String>>();
    String input;
    for(i=0; i<num_of_Attributes ;i++)
    { System.out.print(" Enter attribute no." + i+1 + " : ");
     ArrayList<String> list = new ArrayList<String>();
     while(! input.equals("\n"))
    {
        list.add(input);
        input = sc.nextLine(); 
    }
     attributes.add(list);
    }

程序打印"Enter Attribute 1:“,但即使在新行之后,它也不会打印"Enter attribute 2:”,.It进入无限循环。我如何才能实现程序所需的功能?sc是我的Scanner对象。

EN

回答 2

Stack Overflow用户

发布于 2015-09-03 17:16:15

您应该阅读以下内容:

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine%28%29

具体地说,就是声明:

此方法返回当前行的其余部分,不包括末尾的任何行分隔符

因此,如果用户输入一个只有行分隔符\n的空行,您将看到没有这样的行分隔符的空行。

查看while (!input.isEmpty()),或者更好的while (!input.trim().isEmpty())

作为更一般的规则,您可以调试您的程序(甚至打印input),尝试找出您正在检查的实际值是什么。

票数 0
EN

Stack Overflow用户

发布于 2015-09-03 17:35:14

作为一个速战速决的人,你可以做某事。喜欢

代码语言:javascript
运行
复制
    for (i = 0; i < num_of_Attributes; i++) {
        input = " ";
        System.out.print(" Enter attribute no." + (i + 1) + " : ");
        ArrayList<String> list = new ArrayList<String>();
        while (!input.isEmpty()) {
            list.add(input);
            input = sc.readLine();
        }
        attributes.add(list);
    }

不是很好,但它是有效的。还请注意字符串连接中的计算。在您的代码中,它将打印01、11、21等等。有了括号,它就可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32371470

复制
相关文章

相似问题

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