
【6日でできるJava入門】キーボードからの入力
多くのJavaアプリケーションでは、ユーザーがキーボードから値を入力する場面が登場します。
たとえばクイズアプリや簡単な計算ツールでは、「キーボード入力」を受け取って、その値を使って処理を進めます。
ここでは、Javaでキーボードから値を受け取る標準的な方法とポイントを、サンプルプログラム付きで解説します。

1.キーボード入力の基本
1.1. 標準入力ストリーム
Javaではキーボードからの入力は「標準入力ストリーム(System.in)」を通じて受け取ります。
構成要素 | 役割 |
---|---|
System.in | 標準入力(InputStream型) |
System.out | 標準出力 |
1.2. 入力方法の種類
方法 | 解説 | 使いやすさ |
---|---|---|
System.in.read() | 1バイトずつ(または配列で)直接読み取る | 初心者向けではない |
BufferedReader + InputStreamReader | 1行ずつ文字列で取得(Java 5以前の主流) | 少し面倒 |
Scanner クラス | 1行ずつ、またはトークンごとに簡単に取得できる | 初心者おすすめ |
2.Scannerによるキーボード入力(推奨)
Javaプログラミング入門では、Scanner
クラスを使ったキーボード入力が最も簡単で確実です。
2.1. Scannerクラスの使い方
手順 | サンプルコード | 説明 |
---|---|---|
1. 準備 | import java.util.Scanner; | クラスのインポート |
2. 生成 | Scanner sc = new Scanner(System.in); | Scannerの作成 |
3. 入力 | String s = sc.nextLine(); int n = sc.nextInt(); | 文字列/整数として取得 |
4. 終了 | sc.close(); | (できれば)Scannerを閉じる |
2.2. サンプルプログラム
例:ユーザーの名前と年齢を入力し、挨拶を表示する
ファイル名: lesson18_1.java
import java.util.Scanner;
public class lesson18_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // Scannerの作成
System.out.print("あなたの名前を入力してください: ");
String name = sc.nextLine(); // 1行分の文字列入力
System.out.print("年齢を入力してください: ");
int age = sc.nextInt(); // 整数入力
System.out.println("こんにちは、" + name + "さん(" + age + "歳)!");
sc.close(); // Scannerを閉じる(推奨)
}
}
実行結果
あなたの名前を入力してください: 佐藤
年齢を入力してください: 22
こんにちは、佐藤さん(22歳)!
2.3. Scannerでの主なメソッド
メソッド | 内容 | 例 |
---|---|---|
nextLine() | 1行の文字列入力 | String s = sc.nextLine(); |
nextInt() | 整数値の入力 | int n = sc.nextInt(); |
nextDouble() | 実数値の入力 | double d = sc.nextDouble(); |
next() | 次の単語(空白まで) | String word = sc.next(); |
3.System.in.read()での入力(低レベル)
3.1. 基本の書き方
System.in.read()
はバイト配列で受け取る低レベルな方法です。
(多くの場合、初心者にはScannerのほうが簡単です)
ファイル名: lesson18_2.java
public class lesson18_2 {
public static void main(String[] args) throws Exception {
byte[] b = new byte[100];
System.out.print("何か入力してください: ");
int len = System.in.read(b);
String input = new String(b, 0, len).trim();
System.out.println("入力内容: " + input);
}
}
実行結果
何か入力してください: Javaプログラミング
入力内容: Javaプログラミング
3.2. 解説と注意点
- バイト配列に入力内容が格納される。日本語入力の場合は文字化けに注意(エンコーディング)。
- 入力の最後には「Enter」(改行文字)が含まれるので、
trim()
で前後空白を除くのが一般的。 System.in.read()
はIOExceptionの例外が発生する可能性があるため、throws Exception
などの記述が必要。
3.3. それぞれのコード行の詳しい意味
行 | コード | 解説 |
---|---|---|
1 | byte[] b = new byte[100]; | 100バイト(約100文字分)のデータを格納できる配列を作成。 |
2 | System.out.print(...); | 画面に「何か入力してください: 」と表示。 |
3 | int len = System.in.read(b); | 入力を配列b に格納。戻り値len は読み込んだバイト数(改行も含む)。 |
4 | String input = new String(b, 0, len).trim(); | 配列b の先頭からlen バイト分を文字列に変換し、trim() で両端の空白や改行を除去。 |
5 | System.out.println(...); | 入力内容を表示。 |
まとめ
- Javaでのキーボード入力には「Scannerクラス」が最も簡単・安全で推奨される。
- より低レベルな処理には
System.in.read()
も利用可能だが、初心者はScannerで十分。 - 入力値を取得したら、適切なデータ型へ変換し、必要に応じて入力値の確認や例外処理も行うこと。