Java 如何读取由空格分隔的字符串,而不陷入无限循环等待更多用户输入
我正在开发一个程序,它要求我将用户输入的字符串用空格隔开,然后再次以随机顺序打印这些字符串。我被告知使用StdIn.readString()方法获取用户的输入 我很快意识到readString()方法只读取第一个标记并停止。所以我假设我需要一个while循环来继续读取,直到用户输入完所有字符串。我曾想过创建一个while循环,其中StdIn.isEmpty()的中断条件为true以中断循环,但发现一旦用户开始输入值,它总是返回“true”。因此,我陷入了等待用户输入更多字符串的无限循环中 StdIn的javadoc如下所示: 简化代码如下:Java 如何读取由空格分隔的字符串,而不陷入无限循环等待更多用户输入,java,string,input,while-loop,stdin,Java,String,Input,While Loop,Stdin,我正在开发一个程序,它要求我将用户输入的字符串用空格隔开,然后再次以随机顺序打印这些字符串。我被告知使用StdIn.readString()方法获取用户的输入 我很快意识到readString()方法只读取第一个标记并停止。所以我假设我需要一个while循环来继续读取,直到用户输入完所有字符串。我曾想过创建一个while循环,其中StdIn.isEmpty()的中断条件为true以中断循环,但发现一旦用户开始输入值,它总是返回“true”。因此,我陷入了等待用户输入更多字符串的无限循环中 Std
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值可能是您的最佳选择。我们无法真正告诉您该值是多少,因为这取决于项目的领域。它实际上可以是任何不是有效输入字符串的值,但是项目的业务规则决定了有效输入字符串。