当前位置: 首页 > 知识库问答 >
问题:

从Java中的输入获取字符串

唐啸
2023-03-14

我是Java的新手,我正在尝试从一个多行的输入中获取一个字符串。

例如,一个字符串=“the quick brown fox jumps over the lazy dog.the quick brown fox jumps over the lazy dog.the quick fox jumps over the lazy dog.”输入如下:

敏捷的棕色狐狸跳过懒惰的狗。

敏捷的棕色狐狸跳过懒惰的狗。

敏捷的棕色狐狸跳过懒惰的狗。

我尝试使用while循环和.nextLine(),如下所示

String s="";
Scanner Input = new Scanner (System.in);
    
while(Input.hasNextLine()){
    s = s + Input.nextLine() + " ";
}

但这个循环似乎是无限运行的。谢谢你能给我的任何帮助。

共有2个答案

南宫松
2023-03-14

标准输入流通常永远不会结束,如果您没有指出。您的程序如何知道用户没有输入另一行?

因此,您应该只阅读您明确知道将输入的行,如:

Scanner input = new Scanner(System.in);
String first = input.nextLine();
String second = input.nextLine();
input.close();
System.out.println(first);
System.out.println(second);

如果您希望有一个可变的行数,您应该使用while循环,但用户必须指出输入的结束,正如Christian所建议的那样。像这样:

Scanner input = new Scanner(System.in);
StringBuilder builder = new StringBuilder();
while (input.hasNext()) {
    builder.append(input.nextLine()).append(System.lineSeparator());
}
input.close();
System.out.println(builder.toString());

运行那个将会无限循环(看起来)。但按CTRL-Z时,您将结束输入,input.hasNext()将返回false。(注意,CTRL-Z在Linux和Windows中工作。)

根据Erwin Bolwidt对Christian回答的评论编辑:

如果您正在重定向标准输入流,以便它从文件中读取,那么EOF标记(文件结束)将指示扫描程序输入的结束。因此显然不涉及用户交互,程序仍然会正常运行。

杜焕
2023-03-14

您必须按Ctrl+Z(或UNIX上的Ctrl+D)以指示不会有更多输入。

 类似资料:
  • 问题内容: 我试图找到一种方法来从键盘输入。 我尝试使用: 该方法不存在。 我尝试了作为。但是,它并不总是在每种情况下都可行,因为我从我的方法中调用的另一个方法需要作为输入。因此,我必须找到一种显式将char作为输入的方法。 有什么帮助吗? 问题答案: 你可以从中提取第一个字符: 消耗正好一个字符,你可以使用: 要严格使用一个字符,可以使用:

  • 问题内容: 我正在制作一个应用程序,在某个时候我需要用户选择一种颜色,但是不仅有50个radioButtons,我想知道是否有可能从文本字段或其他内容中真正获得他们想要的颜色。 问题答案: 仅仅制作一个JComboBox或类似的东西会更容易吗? 但是要回答您的问题:是的,有可能。我将提供一段代码,您可以将其用作入门(假设您仍然希望为字符串上色)

  • 在下面的例子中,我试图接受用户的单字符输入,但是当运行程序时,我得到do...而循环执行多次。请参阅下面程序的结果。 如果有人能帮我找到答案,如何解决这个问题?

  • 问题内容: 如何仅从输入字符串中提取数字值? 例如,输入字符串可能像这样: 我只想要数字值,即和。所有字母和特殊字符将被丢弃。 问题答案:

  • 在while循环的末尾,我使用scanner类从用户那里获取一个字符串作为输入,但它不接受任何输入。 请引导我。

  • 我只想要数值,即和。所有的字母和特殊字符将被丢弃。