最終更新日:2022/04/11 原本2022-02-22

[Java] コンソールからデータを受け取る方法(System.in)


Devlopment note / Java    作成日付 : 2020/02/25 03:00:00   修正日付 : 2020/02/25 03:00:00

こんにちは。明月です。


この投稿はJavaのコンソール環境でユーザからデータを入力させる方法に関する説明です。

Javaのプログラミングをすると「System.out.println」関数をよく使います。「System.out.println」関数はデータをコンソールに表示する関数です。

Eclipse(IDE)の開発環境では「sysout」だけ入力しても自動変換(Intellisense)機能で自動に変換されます。


逆に「System.in」という関数は無いかと思ったら、逆にコンソールからデータを入力するスキャン関数であります。

Copy!
 [Source view] Example.java
public class Example {
public static void main(String[] args) {
try {
// データバッファ
byte[] data = new byte[4096];
// コンソールから入力されるSystem.in.read関数
System.in.read(data, 0, 4096);
// バッファでStringに変換
String buffer = new String(data);
// \0の値を除く。
buffer = buffer.trim();
// 結果出力
System.out.println("Result : " + buffer);
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


例をみればコンソールから「test」という値を受け取って、出力しました。

上のとおりに作成しても問題ないですが、バッファを設定することが気になります。

Copy!
 [Source view] Example.java
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
// リソース概念があるので、管理がしやすい。
// バッファ設定がないのでソースがシンプルになる。
try(Scanner scanner = new Scanner(System.in)) {
// コンソールから値を受取る。
String buffer = scanner.nextLine();
// コンソールに出力する。
System.out.println("Result : " + buffer);
}
}
}


結果は同じですが、コネクションがあるので、リソース管理がしやすいです。(コンソールもIOなので結局リソースです。)

try ~ catchもなくなるし、バッファ設定がないので、コードがシンプルになりました。


ここまでJavaのコンソール環境でユーザからデータを入力させる方法に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。