(一見単純な)コードを実行すると、奇妙な出力が得られます。私が持っているものは次のとおりです。
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
の値を印刷するにはどうすればよいですか?
Scannerオブジェクト自体によって返されるtoString()
値を取得していますが、これは目的のものではなく、Scannerオブジェクトの使用方法でもありません。代わりに欲しいのはデータですobtained by Scannerオブジェクト。例えば、
Scanner input = new Scanner(System.in);
String data = input.nextLine();
System.out.println(data);
すべての説明がありますので、使用方法に関するチュートリアルをお読みください。
編集
こちらをご覧ください: スキャナーチュートリアル
Scanner API もご覧ください。これにより、Scannerのメソッドとプロパティのより細かい点が説明されます。
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.");
}
}
input.next();
String s = input.toString();
に変更する
String s = input.next();
それがあなたがやろうとしていたことかもしれません。
これはあなたが望むものを得る可能性が高くなります:
Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);
間違った値を印刷しています。代わりに、文字列がスキャナーオブジェクトを印刷する場合。これを試して
Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);