StdIn,如何读取由空格分隔的字符串而不会陷入无限循环等待更多用户输入

时间:2017-07-20 12:28:06

标签: java string input while-loop stdin

我正在开发一个程序,要求我用空格分隔用户输入的字符串,然后再按随机顺序打印出这些字符串。我被告知使用StdIn.readString()方法来获取用户的输入。

我很快意识到readString()方法只读取第一个令牌并停止。所以我假设我需要一个while循环继续阅读,直到用户完成键入所有字符串。我想创建一个while循环,其中StdIn.isEmpty()的破坏条件为true以打破循环但发现一旦用户启动键值,它总是返回" True"。因此,我陷入了等待用户键入更多字符串的无限循环。

StdIn的javadoc在这里:http://algs4.cs.princeton.edu/code/javadoc/edu/princeton/cs/algs4/StdIn.html#readString()

简化代码如下:

public static void main(String args[])  {
/*
 * This is placeholder, I do not know how long the user input String is.
 */    
String[] s = new String[10];
int index = 0;    
    while(StdIn.isEmpty())  {
        s[index] = StdIn.readString();
        index++;
    }
}

// from here I would like to do other actions, but I cannot break the while loop

我知道在整数或双打中阅读时,人们倾向于设置一个标记值,但我不确定在字符串中设置读取的标记值。期待您的帮助,提前多多感谢!

1 个答案:

答案 0 :(得分:0)

"为此,根据您的操作系统和IDE,使用Ctrl + d或Ctrl + z"来自http://introcs.cs.princeton.edu/java/stdlib/javadoc/StdIn.html