web-dev-qa-db-fra.com

Impression de la variable chaîne en Java

J'obtiens une sortie étrange lors de l'exécution de code (apparemment simple). Voici ce que j'ai:

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

Et la sortie que j'obtiens après avoir compilé avec succès est:

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]

Ce qui est un peu bizarre. Que se passe-t-il et comment imprimer la valeur de s?

14
tekknolagi

Vous obtenez la valeur toString() retournée par l'objet Scanner lui-même, ce qui n'est pas ce que vous voulez et pas la façon dont vous utilisez un objet Scanner. Ce que vous voulez à la place, ce sont les données obtenues par l'objet Scanner. Par exemple,

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

Veuillez lire le tutoriel sur la façon de l'utiliser car il vous expliquera tout.

Modifier
Veuillez regarder ici: Tutoriel scanner

Jetez également un œil à Scanner API qui expliquera certains des points les plus fins des méthodes et propriétés de Scanner.

24

Vous pouvez également utiliser 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.");
   }
}
3
Rok Strniša
input.next();
String s = input.toString();

le changer en

String s = input.next();

C'est peut-être ce que vous essayez de faire.

2
Bhesh Gurung

Cela est plus susceptible de vous procurer ce que vous voulez:

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

Vous imprimez la mauvaise valeur. Au lieu de cela, si la chaîne que vous imprimez l'objet scanners. Essaye ça

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