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

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

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

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

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

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

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

これに対して標準出力とは、プログラムからデータを表示するための装置のことで一般にディスプレイに表示することを言います。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クラスを使って文字列に変換してから入力を取得する必要があります。

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

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー