Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何读取由空格分隔的字符串,而不陷入无限循环等待更多用户输入_Java_String_Input_While Loop_Stdin - Fatal编程技术网

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

Java 如何读取由空格分隔的字符串,而不陷入无限循环等待更多用户输入,java,string,input,while-loop,stdin,Java,String,Input,While Loop,Stdin,我正在开发一个程序,它要求我将用户输入的字符串用空格隔开,然后再次以随机顺序打印这些字符串。我被告知使用StdIn.readString()方法获取用户的输入 我很快意识到readString()方法只读取第一个标记并停止。所以我假设我需要一个while循环来继续读取,直到用户输入完所有字符串。我曾想过创建一个while循环,其中StdIn.isEmpty()的中断条件为true以中断循环,但发现一旦用户开始输入值,它总是返回“true”。因此,我陷入了等待用户输入更多字符串的无限循环中 Std

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

我很快意识到readString()方法只读取第一个标记并停止。所以我假设我需要一个while循环来继续读取,直到用户输入完所有字符串。我曾想过创建一个while循环,其中StdIn.isEmpty()的中断条件为true以中断循环,但发现一旦用户开始输入值,它总是返回“true”。因此,我陷入了等待用户输入更多字符串的无限循环中

StdIn的javadoc如下所示:

简化代码如下:

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

我知道对于读取整数或双精度,人们倾向于设置一个sentinel值,但我不确定要为读取字符串设置什么sentinel值。期待您的帮助,提前多谢

“要执行此操作,请根据您的操作系统和IDE,使用Ctrl+d或Ctrl+z”

如何知道用户何时完成?是否绝对需要使用readString()?使用扫描仪可能会更容易,因为它为您提供了更多选项您的
StdIn
有一个
readLine()
方法,可能会有所帮助。如果您必须使用StdIn类,也许您可以使用.readLine()方法,该方法可能会返回一行,其中包含空格分隔的
单词
,然后您可以将其拆分为一个数组?如果您需要使用readString()方法,如第一段所示,那么sentinel值可能是您的最佳选择。我们无法真正告诉您该值是多少,因为这取决于项目的领域。它实际上可以是任何不是有效输入字符串的值,但是项目的业务规则决定了有效输入字符串。