Java入門26 標準入力(ユーザー入力)を使ったプログラム

Java入門の第26回(第1回はこちら)です。 今回で初心者向けのJava入門シリーズ前半が終了して、ひと区切りとなります。

Javaを使いこなすにはさらに学習や経験が必要ですが、おおまかにJavaプログラミングがどのようなものかをつかんだら、いまある知識で作れるものをどんどん作っていくことも大切です。

今回は、標準入力(ユーザー入力)を利用したサンプルプログラムを作成してみます。いままでに学んだ基礎的な知識だけでも、アイデア次第でプログラムが作れることを体験してみてください。

1. 入力された名前を表示するプログラム

標準入力とは、ユーザーがキーボードなどから入力した内容を受け取ることです。以下は、標準入力(ユーザー入力)を使ったサンプルコードです。

import java.util.Scanner;
public class Test31 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("お名前を入力してください");
        String name = scan.nextLine();

        System.out.println("こんにちは" + name + "さん");
        scan.close();
    }
}

上記コードは、ユーザーに名前を入力してもらって、入力内容を使って「こんにちは〇〇さん」と表示するだけのシンプルなプログラムです。

上記コードを実行した直後は、以下のように表示されます。これは、ユーザーからの入力を待っている状態です。

お名前を入力してください

この状態でユーザーが次の行でキーボードから文字列を入力すると、それを変数nameに代入してprintln()で画面表示しています。仮に「お名前を入力してください」の後に「太郎」と入力してenterキーを押すと「 こんにちは太郎さん 」と表示されます。

以下は、Eclipseで実行した後に、「太郎」と入力してenterキーを押した場合の結果画面です。

java.utilパッケージをインポート

上記例で注目してほしいのは import java.util.Scanner; の部分です。この部分では「java.util」というパッケージをインポートしています。

ユーザー入力を取得するには、その入れ物として Scanner型のインスタンスを作成する必要があります。Scannerクラスはjava.utilパッケージで定義されているため、Scanner型のインスタンスを生成するには、あらかじめjava.utilパッケージをインポートしておく必要があるのです。

Scanner型のインスタンスを生成して、変数scanに代入

あらかじめプログラムの先頭でjava.utilパッケージをインポートしておくことで、Scanner型のインスタンスを生成できるようになります。

Scanner scan = new Scanner(System.in); の部分では、Scanner型のインスタンスを生成して変数scanに代入しています。

ユーザー入力を取得して、変数nameに代入

ユーザー入力は、String name = scan.nextLine();の部分で取得しています。 nextLine()メソッドは、ユーザーが次の行で入力した内容を取得するメソッドです。

nextLine()メソッドで取得した内容は、変数nameに代入しています。ユーザーの入力内容を変数nameの値を代入できたら、あとは「こんにちは〇〇さん」 と画面表示するだけです。

今回はnextLine()メソッドを使ってユーザーが入力した文字列を一行取得しましたが、他にもnextInt()メソッドなら整数を取得できますし、nextDouble()メソッドなら小数点数を取得できます。

2. じゃんけんプログラム

以下は、じゃんけんプログラムのサンプルです。

import java.util.Scanner;
public class Test32 {
    public static void main(String[] args) {
        //配列に入れる
        String[] j = {"グー", "チョキ", "パー"};
        String[] k = {"あなたの勝ち", "あなたの負け", "あいこ"};

        //じゃんけんの手を標準入力で取得
        Scanner scan = new Scanner(System.in);
        System.out.println("[0]" + j[0] + " [1]" + j[1] + " [2]" + j[2]);
        int user = scan.nextInt();     //ユーザーの手
        scan.close();

        //じゃんけんの手を乱数で作成
        int comp = (int)(Math.random()*3); //コンピュータの手

        //勝敗判定
        int kekka;
        if (user == comp) {
            kekka = 2;    //あいこ
        } else if ((user - comp == -1) || (user - comp == 2) ) {
            kekka = 0;    //あなたの勝ち
        } else {
            kekka = 1;    //あなたの負け
        }

        //結果表示
        System.out.println(k[kekka] + "です");
        System.out.println("あなた:" + j[user]);
        System.out.println("コンピュータ:" + j[comp]);
    }
}

上記コードは、ユーザーがキーボードから入力したグー・チョキ・パーと、コンピュータが乱数でランダムに作成した グー・チョキ・パーで勝ち負けを判定するプログラムです。

上記コードでは、配列、標準入力による整数取得、乱数、if文などが使われています。いままでに学んだ基礎的な知識の組み合わせだけで、今回はじゃんけんプログラムが完成しました。

以下は、Eclipseで実行して、じゃんけんをした後の結果画面です。

◆ ◆ ◆

「Java入門」シリーズは、今回でひと区切りとなります。Javaを使いこなすにはさらに学習や経験が必要ですが、おおまかにJavaプログラミングがどのようなものかをつかむ基礎編はこれで修了です。