【Java入門】標準入力を取得、出力する方法(Scannerを解説)

こんにちは!フリーランスの長野です。Javaで標準入力って使っていますか?

標準入力とはキーボードで文字列などを入力することです。この記事では、標準入力について

  • 標準入力、標準出力とは?
  • Scannerの使い方
  • InputStreamReaderの使い方

といったように、基本的な内容から応用的な内容についても解説していきます。今回は標準入力について、わかりやすく解説します。

なお、Javaの記事については、こちらにまとめています。

目次

標準入力、標準出力とは?

標準入力とは、わかりやすく言うと「キーボードからの入力」を指します。主にコンソールアプリケーションでキーボードから入力した内容を、プログラムがデータとして受け取って処理を実行します。

これに対して標準出力とは、プログラムからデータを表示するための装置のことで一般にディスプレイに表示することを言います。Javaでは入出力関連のクラスは、java.ioパッケージにまとめられています。

標準入力

JavaではSystemクラスのinフィールドで標準入力を取得します。System.inの型はInputStream型です。

これはバイトストリームでの読み込みを行うメソッドしか持たないので、ScannerクラスやInputStreamReaderクラスのオブジェクトに変換して文字列で取得できるようにします。この記事ではScannerクラスやInputStreamReaderクラスについて解説します!

標準出力

一方、標準出力ではSystemクラスのoutフィールドを使います。System.outの型はPrintStream型です。

PrintStreamクラスにはprintlnメソッドやprintメソッド、printfメソッドなどが用意されています。おなじみのprintlnメソッドは出力後に改行します。printメソッドは出力後に改行しません。printfメソッドはC言語のようにフォーマットを指定して出力します。

Scannerの使い方

java.util.Scannerクラスには、一行分の入力を取得するnextLineメソッドや空白文字までの入力を取得するnextメソッド、数値の入力を取得するnextIntメソッドなどが用意されています。それぞれの使い方について確認していきましょう。

nextLineで行入力を取得

nextLineメソッドを使うと、改行までの一行分の入力を取得することができます。

import java.util.Scanner;

public class InputSample {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();

        System.out.println(str);
        scan.close();
    }
}

実行結果:

Hello Java!

「Hello Java!」と入力した結果が表示されています。

nextで空白文字までを取得

nextメソッドを使うと空白文字までの入力を取得することができます。

import java.util.Scanner;

public class InputSample {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str1 = scan.next();
        String str2 = scan.next();

        System.out.println(str1);
        System.out.println(str2);
        scan.close();
    }
}

実行結果:

samurai
engineer

「samurai engineer」と入力した結果が表示されています。

nextIntで数値を取得

nextIntメソッドを使うとint型の数値を取得することができます。浮動小数点数型の数値を取得するnextDoubleメソッドやnextFloatメソッドなどもあります。

import java.util.Scanner;

public class InputSample {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num1 = scan.nextInt();
        int num2 = scan.nextInt();
        int sum = num1 + num2;

        System.out.println(num1 + " + " + num2 + " = " + sum);
        scan.close();
    }
}

実行結果:

2 + 3 = 5

「2 3」と入力した結果が表示されています。

InputStreamReaderの使い方

InputStreamReaderクラスを使っても入力文字列を取得することができます。ただ、InputStreamReaderクラスには一文字ごとに読み込むreadメソッドしか用意されていません。

一文字ごとに読み込むのは効率が悪いので、BufferedReaderクラスのオブジェクトに変換して一行まとめて読み込む方法が一般的です。BufferedReaderクラスのreadLineメソッドを使って一行ごとに読み込みます。

サンプルコードで確認しましょう。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class InputSample {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        try {
            String str = reader.readLine();
            System.out.println(str);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

実行結果:

Hello Java!

まとめ

ここでは標準入力について説明しました。JavaではScannerクラスやInputStreamReaderクラスを使って文字列に変換してから入力を取得する必要があります。

使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次