スライドショー

【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クラスを使って文字列に変換してから入力を取得する必要があります。

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

長野 透

長野 透

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説