Java 扫描仪如何决定等待用户输入&;为什么没有';t使用toString等待输入?

Java 扫描仪如何决定等待用户输入&;为什么没有';t使用toString等待输入?,java,java.util.scanner,tostring,Java,Java.util.scanner,Tostring,我试图通过使用Scanner对象捕获用户输入(字符串),以便根据需要进一步处理它,同时我尝试使用字符串类的标准方法中未列出的方法 因此,我的代码如下所示: Scanner user_input = new Scanner(System.in); System.out.println("Please enter the string"); String captured_string = user_input.toString(); System

我试图通过使用Scanner对象捕获用户输入(字符串),以便根据需要进一步处理它,同时我尝试使用字符串类的标准方法中未列出的方法

因此,我的代码如下所示:

    Scanner user_input = new Scanner(System.in);
    System.out.println("Please enter the string");
    String captured_string = user_input.toString();
    System.out.println(captured_string);
使用.toString根本不会抛出错误,但程序也不会等待用户输入

我知道使用.nextLine可以解决这个问题,因为它是为Scanner类定义的标准方法


有人能帮我理解吗,为什么程序不等待用户输入?

您需要使用nextLine方法,因为toString将对象扫描仪转换为字符串,这就是为什么它会打印这些奇怪的东西。

您需要使用nextLine方法,因为toString将对象扫描仪转换为字符串,这就是为什么它会打印这些奇怪的东西。

该方法返回有关
扫描仪
对象本身的信息,而不是正在使用的输入流中的任何数据。请参阅文档:

返回此扫描仪的字符串表示形式。扫描仪的字符串表示形式包含可能对调试有用的信息。具体格式尚未确定

当您想从输入流中读取数据时,必须使用任何
next*()
方法,如。

该方法返回有关
扫描仪
对象本身的信息,而不是正在使用的输入流中的任何数据。请参阅文档:

返回此扫描仪的字符串表示形式。扫描仪的字符串表示形式包含可能对调试有用的信息。具体格式尚未确定

当您想从输入流中读取数据时,必须使用任何类似的
next*()
方法

…在执行此操作时,我尝试使用中未列出的方法 字符串类的标准方法

默认情况下,Java中的每个类都继承一个名为的类。类
对象
有一个名为的方法,该方法返回一个
字符串
。这意味着,如果类不重写(即重新定义)方法,
toString
,则在其对象上调用此方法将打印
object#toString
返回的内容

使用.toString根本不会抛出错误

既然您已经理解了
toString
的概念,我不需要向您解释为什么它没有抛出错误

但程序也不会等待用户输入

为此,您调用了错误的方法。为了等待输入,请根据您的要求设置方法和以名称
next
开头的方法(例如
nextLine
nextInt
等)。我建议您花些时间研究文档。示例用法如下所示:

String captured_string = user_input.nextLine();
…在执行此操作时,我尝试使用中未列出的方法 字符串类的标准方法

默认情况下,Java中的每个类都继承一个名为的类。类
对象
有一个名为的方法,该方法返回一个
字符串
。这意味着,如果类不重写(即重新定义)方法,
toString
,则在其对象上调用此方法将打印
object#toString
返回的内容

使用.toString根本不会抛出错误

既然您已经理解了
toString
的概念,我不需要向您解释为什么它没有抛出错误

但程序也不会等待用户输入

为此,您调用了错误的方法。为了等待输入,请根据您的要求设置方法和以名称
next
开头的方法(例如
nextLine
nextInt
等)。我建议您花些时间研究文档。示例用法如下所示:

String captured_string = user_input.nextLine();

打印内容请输入字符串java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\x{2c}][decimal separator=\x{2e}][positive prefix=\Q-\E][positive sufix=]�\E] [无限字符串=\Q∞\E] @Simon请在您的帖子中加入您想问的问题。它打印什么请输入字符串java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skiped=false][group separator=\x{2c decimal separator=\x{2e}][positive prefix=][正后缀=][负后缀=][NaN字符串=\Q�\E] [无限字符串=\Q∞\E] @Simon请在你的帖子中加入你想问的问题。