Java でスキャナをクリア
Java の Scanner
クラスは入力や出力を取るためによく使われます。その機能を利用するために、Scanner
クラスのオブジェクトを作成します。
このメソッドで一度 Scanner
を閉じてしまうと、入力ストリームが閉じられているため、入力を取ることができなくなるからです。
Java では他にも Scanner
をクリアする方法があり、以下にその方法を説明する例を示します。
Java で nextLine()
を用いたスキャナのクリア
これは現在の行をスキャンしてから次の行に Scanner
をセットし、新しい行に対して他の操作を行うためのものです。
以下の例では、while
ループ内でユーザに入力を求め、それが有効なバイナリであるかどうかを hasNextInt(radix)
を用いてチェックしています。有効なバイナリであれば binary
変数に格納され、バイナリでなければ、有効なバイナリ値を入力するように促すメッセージが出力されます。
この状況では、Scanner
をクリアしないとループが終わることはありません。値がバイナリでない場合、Scanner
は新しい入力を取るために新しい行に移動しなければならません。これが、現在の行を飛ばして新しい行に移動するために nextLine()
を使用する理由です。
import java.util.Scanner;
public class ClearScanner {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int binary = 0;
int radix = 2;
while (binary == 0) {
System.out.print("Please input a valid binary: ");
if (input.hasNextInt(radix)) {
binary = input.nextInt(radix);
} else {
System.out.println("Not a Valid Binary");
}
input.nextLine();
}
System.out.print("Converted Binary: " + binary);
}
}
出力:
Java で Scanner
をクリアするために新しい Scanner
オブジェクトを作成する
Scanner
をクリアするもう一つの方法は、ユーザがバイナリ値以外の値を入力したときに新しい Scanner
オブジェクトを作成することです。この方法は、新しいオブジェクトが作成されると既存の Scanner
オブジェクトがクリアされ、新しい入力ストリームが開始されるために機能します。
import java.util.Scanner;
public class ClearScanner {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int binary = 0;
int radix = 2;
while (binary == 0) {
System.out.print("Please input a valid binary: ");
if (input.hasNextInt(radix)) {
binary = input.nextInt(radix);
} else {
System.out.println("Not a Valid Binary");
}
input = new Scanner(System.in);
}
System.out.print("Converted Binary: " + binary);
}
}
出力:
Please input a valid binary: 23
Not a Valid Binary
Please input a valid binary: 11101
Converted Binary: 29
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn