【问题标题】:Array list returns empty list after i tried to add strings from keyboard在我尝试从键盘添加字符串后,数组列表返回空列表
【发布时间】:2019-10-16 15:41:01
【问题描述】:

在这个程序中,我想从键盘无休止地输入字符串,直到用户输入“0”。 我尝试了许多不同的 next() 和 nextLine() 组合,但程序要么输出空列表,要么没有收到字符串。

我已经在永远循环中将“if condition”的位置从底部更改为顶部。起初,它甚至没有跳出循环。

下面是我的代码:

    List<String> keyWords = new ArrayList<String>();
    System.out.println("Input the keywords: (type 0 if you want to stop)\n");
    Scanner scanKeyWords = new Scanner(System.in);
    for(;;) {
        if(scanKeyWords.next().equals("0")) break;
        else
        keyWords.add(scanKeyWords.nextLine());
        System.out.println("done");
    }
    System.out.println(keyWords.toString());
    System.out.println(keyWords.isEmpty());

例如当我输入 “爱” “恨” “0” 代码返回 [, ,]???

我用 isEmpty 检查了它根本不是空的?

我只是java的初学者。目前我正在尝试通过这个与关键字相关的项目来提高我的技能。

你能帮我解决这个问题吗?非常感谢!

【问题讨论】:

    标签: java string arraylist java.util.scanner


    【解决方案1】:

    我认为这是因为您已经消耗了if 条件中的输入,所以在else 块内,nextLine() 不会返回任何内容。

    这是一个工作版本:

    import java.util.*;
    
    class Test {
        public static void main(String[] args) {
            List<String> keyWords = new ArrayList<>();
            Scanner scanKeyWords = new Scanner(System.in);
            for(;;) {
                String next = scanKeyWords.next();
                if("0".equals(next)) {
                    break;
                }
                // if you put keyWords.add(scankeyWords.nextLine()) here, it will not work.
                keyWords.add(next);
            }
            System.out.println(keyWords.toString());
        }
    }
    

    【讨论】:

    • @SeanWilliam 嗨,欢迎来到 StackOverflow。如果 Surely 的回答对您有帮助,您可以将其标记为已接受。
    猜你喜欢
    • 2019-03-12
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2017-03-20
    相关资源
    最近更新 更多