【6日でできるJava入門】キーボードからの入力

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

1.キーボード入力の基本

1.1. 標準入力ストリーム

Javaではキーボードからの入力は「標準入力ストリーム(System.in)」を通じて受け取ります。

構成要素役割
System.in標準入力(InputStream型)
System.out標準出力

1.2. 入力方法の種類

方法解説使いやすさ
System.in.read()1バイトずつ(または配列で)直接読み取る初心者向けではない
BufferedReader + InputStreamReader1行ずつ文字列で取得(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. それぞれのコード行の詳しい意味

コード解説
1byte[] b = new byte[100];100バイト(約100文字分)のデータを格納できる配列を作成。
2System.out.print(...);画面に「何か入力してください: 」と表示。
3int len = System.in.read(b);入力を配列bに格納。戻り値lenは読み込んだバイト数(改行も含む)。
4String input = new String(b, 0, len).trim();配列bの先頭からlenバイト分を文字列に変換し、trim()で両端の空白や改行を除去。
5System.out.println(...);入力内容を表示。

まとめ

  • Javaでのキーボード入力には「Scannerクラス」が最も簡単・安全で推奨される。
  • より低レベルな処理にはSystem.in.read()も利用可能だが、初心者はScannerで十分。
  • 入力値を取得したら、適切なデータ型へ変換し、必要に応じて入力値の確認や例外処理も行うこと。