目次
Java で java.util.Scanner
を使わずに、 System.in.read()
を使って 直接 入力を取得する方法をまとめました。
環境
- Java 11
[おさらい] Scanner を使って標準入力を取得する方法
Scanner
を使って標準入力を取得するには次のようにします。 Scanner
のコンストラクタに System.in
を渡してインスタンスを作ります。
1 2 3 4 5 6 7 8 |
import java.util.Scanner; public class Sample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(sc.next()); } } |
Scanner
のインスタンスは next
だけでなく、 文字を数値にしてから返す nextInt
, nextDouble
や、 真偽値にしてから返す nextBoolean
などを備えていて便利です。
System.in から直接標準入力を取得する方法
System.in
から直接標準入力を取得するには、 System.in.read()
を利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.io.IOException; public class StandardInput { public static String read() throws IOException { StringBuilder s = new StringBuilder(); while (true) { char c = (char) System.in.read(); if (c == '\n') break; s.append(c); } return s.toString(); } } |
StandardInput.read()
で標準入力の文字列を取得できるようにしています。
標準入力で Enter が押されるまでは値を返しません。 System.in
は Enter が押される('\n'
が入力される)と、 それまでの文字を1文字ずつ返します。