Строка переменной строки java

Я получаю некоторый странный вывод при запуске (казалось бы, простого) кода. Вот что у меня есть:

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);
  }
}

И результат, который я получаю после компиляции, выглядит так:

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]

Какой вид странный. Что происходит и как мне печатать значение s?

Ответ 1

Вы получаете значение toString(), возвращаемое самим объектом Scanner, которое не является тем, что вы хотите, а не тем, как вы используете объект Scanner. Вместо этого вам нужны данные, полученные объектом Scanner. Например,

Scanner input = new Scanner(System.in);
String data = input.nextLine();
System.out.println(data);

Прочтите учебник о том, как его использовать, поскольку он объяснит все.

Edit
Посмотрите здесь: Учебник по сканеру

Также ознакомьтесь с API-интерфейсом сканера, который объяснит некоторые из тонкостей методов и свойств сканера.

Ответ 2

input.next();
String s = input.toString();

измените его на

String s = input.next();

Возможно, это то, что вы пытались сделать.

Ответ 3

Скорее всего, вы получите то, что хотите:

Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);

Ответ 4

Вы печатаете неправильное значение. Вместо этого, если строка вы печатаете объект сканера. Попробуйте это

Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);

Ответ 5

Вы также можете использовать BufferedReader:

import java.io.*;

public class TestApplication {
   public static void main (String[] args) {
      System.out.print("Enter a password: ");
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      String password = null;
      try {
         password = br.readLine();
      } catch (IOException e) {
         System.out.println("IO error trying to read your password!");
         System.exit(1);
      }
      System.out.println("Successfully read your password.");
   }
}