用Java打印字符串变量

tek*_*agi 15 java variables io console

运行(看似简单)代码时,我得到了一些奇怪的输出.这就是我所拥有的:

import java.util.Scanner;

public class TestApplication {
  public static void main(String[] args) {
    System.out.println("Enter a password: ");
    Scanner input = new Scanner(System.in);
    input.next();
    String s = input.toString();
    System.out.println(s);
  }
}
Run Code Online (Sandbox Code Playgroud)

编译成功后得到的输出是:

Enter a password: 
hello
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=5][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q?\E]
Run Code Online (Sandbox Code Playgroud)

这有点奇怪.发生了什么,我如何打印价值s

Hov*_*els 24

您将获得toString()Scanner对象本身返回的值,这不是您想要的,而不是您使用Scanner对象的方式.您想要的是Scanner对象获取的数据.例如,

Scanner input = new Scanner(System.in);
String data = input.nextLine();
System.out.println(data);
Run Code Online (Sandbox Code Playgroud)

请阅读有关如何使用它的教程,因为它将解释所有.

编辑
请看这里:扫描仪教程

另请参阅Scanner API,它将解释Scanner方法和属性的一些细节.