Java 扫描仪如何决定等待用户输入&;为什么没有';t使用toString等待输入?
我试图通过使用Scanner对象捕获用户输入(字符串),以便根据需要进一步处理它,同时我尝试使用字符串类的标准方法中未列出的方法 因此,我的代码如下所示: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 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请在你的帖子中加入你想问的问题。