キーボード入力から取得!JavaでScannerクラスを使う方法【初心者向け】

初心者向けにJavaでキーボードからの入力を読み取る方法について解説しています。入力の読み取りにはScannerクラスを使います。入力の判定とデータの処理方法について実際の例も見ながら覚えていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

この記事では、Javaでキーボードからの入力を読み取る方法について解説します。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

キーボードからの入力を読み取る方法について詳しく説明していくね!

大石ゆかり

お願いします!

キーボードからの入力を読み取る方法(Scannerクラスの使い方)

Javaでキーボードからの入力を読み取るには、「Scanner」クラスを使います。

「Scanner」クラスの基本的な使い方は次のようなかんじです。

  1. コンストラクタに読み取り先の入力ストリームを指定してインスタンス化する
  2. 入力があるか判定する
  3. 入力があれば、その内容を取り出す

 

コンストラクタ

public Scanner(InputStream source)

 

入力があるか判定

public boolean hasNext()

その他、データ型に応じた次のメソッドも用意されています。

入力内容はあってもそのデータ型に変換できない場合は、これらメソッドはfalseを返します。(例:次のデータが「あいうえお」のときに「hasNextInt( )」を呼び出すとfalse)

public boolean hasNextInt()
public boolean hasNextBoolean()
public boolean hasNextDouble()
public boolean hasNextBigDecimal()

 

入力内容を取り出す

取り出すデータの型に応じたメソッドが用意されています。代表的なものをいくつか挙げておきます。

public String next()
public int nextInt()
public boolean nextBoolean()
public double nextDouble()
public BigDecimal nextBigDecimal()

 

実際に書いてみよう

キーボードから入力された文字を反転して表示するプログラムを作ってみましょう。

import java.util.Scanner;

public class Reverser {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        try {
            System.out.println("キーボードから何か入力してみてください");
            while (s.hasNext()) {
                String value = s.next();
                System.out.println(new StringBuilder(value).reverse());
            }
        } finally {
            s.close();
        }
    }
}

プログラムを起動し、キーボードから適当な値を入力してみてください。

次のような結果になると思います。

キーボードから何か入力してみてください
test
tset
aiueo
oeuia
あいうえお
おえういあ
これはテストです
すでトステはれこ
こんばんは
はんばんこ

なお、このプログラムは、「while」ループを使って「入力があるまでずっと待ち続ける」という状態を作っています。ですので入力を止めてもいつまで経ってもプログラムは終了せず、入力待ちのままです。

EclipseなどのIDEで実行している場合は、停止ボタンをクリックすることでプログラムを終了させましょう。

 

[PR] Javaで挫折しない学習方法を動画で公開中

監修してくれたメンター

青柳哲夫

独立系SIerやベンチャーを経て、現在はフリーランスエンジニアとして活動しています。
PHPやJava・Rubyでの業務系Webアプリケーション開発が得意です。
TechAcademyではJavaコース・ブロックチェーンコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。