我是Java的新手,我正在尝试从多行输入中获取字符串 .
例如一根绳子=“快速的棕色狐狸跳过懒狗 . 快速的棕色狐狸跳过懒狗 . 快速的狐狸跳过懒狗 . ”来自输入,如下:
快速的棕色狐狸跳过懒狗 . 敏捷的棕色狐狸跳过了懒狗 . 敏捷的棕色狐狸跳过了懒狗 .
我试过像这样使用带有.nextLine()的while循环
String s="";
Scanner Input = new Scanner (System.in);
while(Input.hasNextLine()){
s = s + Input.nextLine() + " ";
}
但这个循环看似无限地运行 . 感谢您提供的任何帮助 .
4 回答
您必须按Ctrl z(或UNIX上的Ctrl d)以指示不会有更多输入 .
如果您没有指明,标准输入流通常永远不会结束 . 您的程序如何知道用户没有输入另一行?
因此,您应该只阅读您明确知道会输入的行,如下所示:
如果你想拥有一个可变数量的行,你应该使用你的while循环,但是用户必须指出输入的结束,正如Christian建议的那样 . 像那样:
运行会无限循环(貌似) . 但是当按下CTRL-Z时你将结束输入,
input.hasNext()
将返回false . (注意,CTRL-Z适用于Linux和Windows . )根据Erwin Bolwidt对Christian的答案的评论编辑:
如果要重定向标准输入流,以便例如从文件读取,则EOF标记(文件末尾)将指示扫描仪输入的结束 . 因此显然没有涉及用户交互,程序仍然会正常运行 .
添加一个变量计数并在每个循环中递增它 . 如果计数符合某些条件,那么你可以打破;来自循环 . 某些人喜欢,
需要在某些条件上结束循环,加上你的var名称是1个字符,这是不好的 .
你的方式工作按ctrl -Z(窗口)结束循环,但我不认为可以在此之后从标准输入输入更多输入 .
另一种方法是通过输入特定字符串来提示用户结束输入: