🪐
Java:Scannerで取り込んだ数字の列に半角スペース改行を施す
クラスScanner
Scannerの役割 Javaドキュメントより
Scannerは、区切り文字のパターンを使用して入力をトークンに分割します。デフォルトでは区切り文字は空白文字です。結果として得られるトークンは、さまざまなnextメソッドを使用して、異なる型の値に変換できます。たとえば、次のコードを使用して、System.inから数値を読み込むことができます。
入力ソースから数字を取り込む時のコード
import java.util.*;
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
1行目:Scannerクラスを宣言
2行目:取り込んだ値をiに代入
半角スペースで取り込んだ数字を区切る
String input = "2022 0703";
Scanner sc = new Scanner(input).useDelimiter("\\s+");
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a);
System.out.println(b);
s.close();
実行結果は
2020
0703
となります。
2行目に .useDelimiter("\s+"); と書くことで、半角スペースの部分で数字を区切ることができます。
「入力」するところから値を取り込む場合は、
String input = "2022 0703";
は書かずに、
Scanner sc = new Scanner(System.in).useDelimiter("\\s+");
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a);
System.out.println(b);
s.close();
というように書き、入力するところに 2020 0702 と入力します。
for文で短く記述する
次に、このコードをfor文を用いて短く記述してみましょう。
【入力欄から打ち込む場合】
入力 2022 0702
Scanner sc = new Scanner(System.in).useDelimiter("\\s+");
for (int i = 0; i < 2; i++) {
int line = sc.nextInt();
System.out.println(line);
}
sc.close();
2行目に2とあるが、この2という数字は数字の塊が「2022 0703」0702で2つだからです。
【フィールド上の数字の列を取り込む場合】
String input = "2022 0703";
Scanner sc = new Scanner(input).useDelimiter("\\s+");
for (int i = 0; i < 2; i++) {
int line = sc.nextInt();
System.out.println(line);
}
sc.close();
Discussion