繁体   English   中英

Java扫描器,将来自控制台的用户输入作为单独的单词输入到数组列表中

[英]Java Scanner, taking user input from console into array list as separate words

我试图将用户输入从控制台直接读取到一个数组列表中,并用在两侧具有空格的每个单词或实体分隔(默认行为)。 问题是我陷入了while循环中。 Scanner.next()一直在等待更多输入,尽管我知道我想在用户按return键后停止输入输入:

Scanner input = new Scanner(System.in);

    System.out.print("Enter a sentence: ");
    do {
        if (words.add(input.next());

    } while (input.hasNext());

    System.out.println(words);

我输入了一行,除了我必须按CTRL-D来终止它(IE。表示输入结束)。 我只想在句子的末尾按回车符'\\ n'时自动结束它。

使用split可能更简单。

// read a line, split into words and add them to a collection.
words.addAll(Arrays.asList(input.nextLine().split("\\s+")));

您可以始终使用Console类,如下所示:

Console console = System.console();

System.out.print("Enter a sentence: ");

List<String> words = Arrays.asList(console.readLine().split("\\s+"));

System.out.println(words);

readline()方法应该处理\\ n问题。

如果您需要使用Scanner来读取类型,则可以混合使用两种类:

Scanner scanner = new Scanner(console.reader());

希望这可以帮助!

您可以调用input.hasNextLine和input.nextLine来获得一行,然后为所获得的行创建一个新的Scanner并使用现在的代码。 不是最便宜的解决方案,而是一种简单的实现方法,直到您提出更好的解决方案为止:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM