Search code examples
javavariablesioconsole

Printing string variable in Java


I'm getting some weird output when running (seemingly simple) code. Here's what I have:

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

And the output I get after compiling successfully is:

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]

Which is sort of weird. What's happening and how do I print the value of s?


Solution

  • You're getting the toString() value returned by the Scanner object itself which is not what you want and not how you use a Scanner object. What you want instead is the data obtained by the Scanner object. For example,

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

    Please read the tutorial on how to use it as it will explain all.

    Edit
    Please look here: Scanner tutorial

    Also have a look at the Scanner API which will explain some of the finer points of Scanner's methods and properties.