Javaを使用してプログラミングしています。
ユーザーがconsoleベースのプログラムでEnterキーを押した場合に認識できるコードを記述しようとしています。
Javaを使用してこれを行うにはどうすればよいですか。これは、スキャナーまたはバッファー付き入力リーダーを使用して実行できると言われています。バッファ付き入力リーダーがわかりません(または使用方法がわかりません)。
スキャナーを使用してこれを実行しようとしましたが、Enterを2回押すとプログラムが終了し、動作しません
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey == ""){
System.out.println("It works!");
ありがとう
-編集-次のコードは、==
の代わりに文字列にequals
メソッドを使用して動作します
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey.equals("")){
System.out.println("It works!");
どのようにこれを行うことができますか?また、バッファ付き入力リーダーを使用してこれを行うことの長所は何ですか?
これはJava.util.Scannerを使用して機能し、複数の「入力」キーストロークを取ります。
_ Scanner scanner = new Scanner(System.in);
String readString = scanner.nextLine();
while(readString!=null) {
System.out.println(readString);
if (readString.isEmpty()) {
System.out.println("Read Enter Key.");
}
if (scanner.hasNextLine()) {
readString = scanner.nextLine();
} else {
readString = null;
}
}
_
分解するには:
_Scanner scanner = new Scanner(System.in);
String readString = scanner.nextLine();
_
これらの行は、 標準入力ストリーム (キーボード)から読み込んでいる新しいScanner
を初期化し、そこから1行を読み込みます。
_ while(readString!=null) {
System.out.println(readString);
_
スキャナーがまだnull以外のデータを返している間に、各行を画面に印刷します。
_ if (readString.isEmpty()) {
System.out.println("Read Enter Key.");
}
_
「enter」(またはreturnなど)キーが入力によって提供される場合、nextLine()
メソッドは空の文字列を返します。文字列が空かどうかを確認することで、そのキーが押されたかどうかを判断できます。ここでは、テキストRead Enter Keyが出力されますが、ここで任意のアクションを実行できます。
_ if (scanner.hasNextLine()) {
readString = scanner.nextLine();
} else {
readString = null;
}
_
最後に、コンテンツを印刷し、「Enter」キーが押されたときに何かを実行した後、スキャナーに別の行があるかどうかを確認します。標準入力ストリームの場合、このメソッドは、ストリームが閉じられるか、プログラムの実行が終了するか、さらに入力が提供されるまで「ブロック」します。
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
Double d = scan.nextDouble();
String newStr = "";
Scanner charScanner = new Scanner( System.in ).useDelimiter( "(\\b|\\B)" ) ;
while( charScanner.hasNext() ) {
String c = charScanner.next();
if (c.equalsIgnoreCase("\r")) {
break;
}
else {
newStr += c;
}
}
System.out.println("String: " + newStr);
System.out.println("Int: " + i);
System.out.println("Double: " + d);
このコードは正常に動作します