Javaの標準入力集
事前準備
(コンソールの入力を受ける場合)
import java.util.Scanner;
class ScanSample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//任意 大規模なプログラムでは閉じるべき
sc.close();
}
}以後、クラス,main云々は省略しまう
-
日本語入力ができない場合は
Visual Studio Codeなどの環境では日本語の入力が文字化けしてしまう場合がある
import java.util.Scanner; class ScanSample { public static void main(String[] args) { Scanner sc = new Scanner(System.in, "Shift-JIS"); sc.close(); } }PowerShellに入力されるエンコード方式はShift-JIS
対してJavaのScannerが受け取るエンコード方式はデフォルトでUTF-16のため明示する必要がある
入力を読む
一行を読み込む
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();一句(次の空白文字まで)を読み込む
Scanner sc = new Scanner(System.in);
String word = sc.next();整数一つ(次の空白文字まで)を読み込む
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();自動で型変換される int型に変換できない場合は例外が発生する
数値の前後に空白文字が無いと認識しない
他の型も同様にして可能です (nextDouble())など
検索
一行に対して指定した文字列を検索
Scanner sc = new Scanner(System.in);
// hahihuheho
String word = sc.findInLine("hi");
System.out.println(word);
// hi
String word = sc.next();
System.out.println(word);
// huheho指定した文字列まではスキップ 区切り文字は無視する
見つからなかった場合nullを返す
判定
次の行があるか
Scanner sc = new Scanner(System.in);
if (sc.hasNextLine()) {
String line = sc.nextLine();
}次の語句があるか
Scanner sc = new Scanner(System.in);
if (sc.hasNext()) {
String word = sc.next();
}次の語句がint型か
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
String num = sc.nextInt();
}数値の前後に空白文字が無いと認識しない
他の型も同様にして可能です (hasNextBoolean())など
区切り文字
区切り文字を確認、変更
Scanner sc = new Scanner(System.in);
sc.reset();
System.out.println(sc.delimiter());
// \\p{javaWhitespace}+
sc.useDelimiter(",");
System.out.println(sc.delimiter());
// ,もっと詳しい情報は公式リファレンスを見てね