標準入出力

Java – 複数行の文字列をキーボードから入力する方法

Javaで複数行の文字列をキーボードから入力するには、ScannerクラスやBufferedReaderクラスを使用します。

Scannerの場合、nextLine()メソッドをループで使用して複数行を取得できます。

終了条件として特定の文字列(例: “exit”)を入力する方法が一般的です。

一方、BufferedReaderを使う場合は、readLine()メソッドを同様にループで利用します。

複数行入力の基本

Javaで複数行の文字列をキーボードから入力する方法はいくつかありますが、基本的な考え方は、ユーザーが入力を終了するための特定の条件を設けることです。

一般的には、空行を入力することで入力を終了する方法がよく使われます。

これにより、ユーザーは必要なだけの行を入力し、最後に空行を入力することで入力を完了できます。

以下に、複数行の文字列を入力するための基本的なサンプルコードを示します。

このコードでは、Scannerクラスを使用して、ユーザーからの入力を受け取ります。

import java.util.Scanner;
public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder input = new StringBuilder();
        
        System.out.println("複数行の文字列を入力してください。空行で終了します。");
        
        while (true) {
            String line = scanner.nextLine(); // 行を読み込む
            
            if (line.isEmpty()) { // 空行の場合
                break; // ループを終了
            }
            
            input.append(line).append("\n"); // 入力を追加
        }
        
        System.out.println("入力された内容:");
        System.out.println(input.toString()); // 入力内容を表示
        
        scanner.close(); // Scannerを閉じる
    }
}

このコードを実行すると、ユーザーは複数行の文字列を入力でき、空行を入力することで入力が終了します。

入力された内容は、最後に表示されます。

複数行の文字列を入力してください。空行で終了します。
こんにちは
これは複数行の入力です
Javaプログラミングを楽しんでいます
(空行を入力)
入力された内容:
こんにちは
これは複数行の入力です
Javaプログラミングを楽しんでいます

このように、Scannerクラスを使うことで、簡単に複数行の入力を受け取ることができます。

次のセクションでは、BufferedReaderクラスを使用した方法について解説します。

Scannerクラスを使用した複数行入力

Scannerクラスは、Javaで標準入力を扱うための便利なクラスです。

複数行の文字列を入力する際にも非常に役立ちます。

Scannerを使用することで、ユーザーからの入力を簡単に取得し、処理することができます。

以下に、Scannerクラスを使用した複数行入力の具体的な方法を示します。

以下のコードは、Scannerクラスを使用して複数行の文字列を入力し、空行で入力を終了する例です。

import java.util.Scanner;
public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder input = new StringBuilder();
        
        System.out.println("複数行の文字列を入力してください。空行で終了します。");
        
        while (true) {
            String line = scanner.nextLine(); // 行を読み込む
            
            if (line.isEmpty()) { // 空行の場合
                break; // ループを終了
            }
            
            input.append(line).append("\n"); // 入力を追加
        }
        
        System.out.println("入力された内容:");
        System.out.println(input.toString()); // 入力内容を表示
        
        scanner.close(); // Scannerを閉じる
    }
}
  • Scanner scanner = new Scanner(System.in);

標準入力を受け取るためのScannerオブジェクトを作成します。

  • StringBuilder input = new StringBuilder();

入力された文字列を蓄積するためのStringBuilderオブジェクトを作成します。

  • while (true) { ... }

無限ループを使用して、ユーザーからの入力を繰り返し受け取ります。

  • if (line.isEmpty()) { break; }

空行が入力された場合、ループを終了します。

  • input.append(line).append("\n");

入力された行をStringBuilderに追加します。

  • System.out.println(input.toString());

最後に、入力された内容を表示します。

複数行の文字列を入力してください。空行で終了します。
Javaは楽しい
プログラミングを学ぶ
空行を入力
入力された内容:
Javaは楽しい
プログラミングを学ぶ

このように、Scannerクラスを使用することで、簡単に複数行の文字列を入力し、処理することができます。

次のセクションでは、BufferedReaderクラスを使用した方法について解説します。

BufferedReaderクラスを使用した複数行入力

BufferedReaderクラスは、効率的に文字ストリームを読み込むためのクラスです。

特に、大量のデータを扱う場合や、行単位での読み込みが必要な場合に便利です。

BufferedReaderを使用することで、複数行の文字列を簡単に入力することができます。

以下に、BufferedReaderを使用した複数行入力の具体的な方法を示します。

以下のコードは、BufferedReaderクラスを使用して複数行の文字列を入力し、空行で入力を終了する例です。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class App {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder input = new StringBuilder();
        
        System.out.println("複数行の文字列を入力してください。空行で終了します。");
        
        try {
            while (true) {
                String line = reader.readLine(); // 行を読み込む
                
                if (line.isEmpty()) { // 空行の場合
                    break; // ループを終了
                }
                
                input.append(line).append("\n"); // 入力を追加
            }
        } catch (IOException e) {
            e.printStackTrace(); // エラー処理
        } finally {
            try {
                reader.close(); // BufferedReaderを閉じる
            } catch (IOException e) {
                e.printStackTrace(); // エラー処理
            }
        }
        
        System.out.println("入力された内容:");
        System.out.println(input.toString()); // 入力内容を表示
    }
}
  • BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

標準入力を受け取るためのBufferedReaderオブジェクトを作成します。

  • StringBuilder input = new StringBuilder();

入力された文字列を蓄積するためのStringBuilderオブジェクトを作成します。

  • try { ... } catch (IOException e) { ... }

入力処理を行う際に、IOExceptionが発生する可能性があるため、例外処理を行います。

  • while (true) { ... }

無限ループを使用して、ユーザーからの入力を繰り返し受け取ります。

  • if (line.isEmpty()) { break; }

空行が入力された場合、ループを終了します。

  • input.append(line).append("\n");

入力された行をStringBuilderに追加します。

  • System.out.println(input.toString());

最後に、入力された内容を表示します。

複数行の文字列を入力してください。空行で終了します。
BufferedReaderは便利です
Javaプログラミングを学ぶ
(空行を入力)
入力された内容:
BufferedReaderは便利です
Javaプログラミングを学ぶ

このように、BufferedReaderクラスを使用することで、効率的に複数行の文字列を入力し、処理することができます。

次のセクションでは、複数行入力の応用例について解説します。

複数行入力の応用例

複数行の入力は、さまざまなアプリケーションで利用されます。

ここでは、実際のシナリオに基づいたいくつかの応用例を紹介します。

これにより、複数行入力の活用方法を具体的に理解できるでしょう。

テキストファイルの内容を読み込む

ユーザーが入力した複数行のテキストをファイルに保存することができます。

これにより、データを永続化し、後で再利用することが可能になります。

以下は、ユーザーからの入力をファイルに書き込むサンプルコードです。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class App {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder input = new StringBuilder();
        
        System.out.println("複数行の文字列を入力してください。空行で終了します。");
        
        try {
            while (true) {
                String line = reader.readLine(); // 行を読み込む
                
                if (line.isEmpty()) { // 空行の場合
                    break; // ループを終了
                }
                
                input.append(line).append("\n"); // 入力を追加
            }
            
            // 入力内容をファイルに書き込む
            try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
                writer.write(input.toString()); // ファイルに書き込む
            }
            System.out.println("入力内容がoutput.txtに保存されました。");
            
        } catch (IOException e) {
            e.printStackTrace(); // エラー処理
        }
    }
}

複数行のデータを解析する

複数行の入力を受け取り、特定の形式でデータを解析することも可能です。

たとえば、CSV形式のデータを受け取り、各行をカンマで分割して処理することができます。

以下は、CSV形式のデータを解析するサンプルコードです。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class App {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("CSV形式のデータを入力してください。空行で終了します。");
        
        try {
            String line;
            while ((line = reader.readLine()) != null) {
                if (line.isEmpty()) { // 空行の場合
                    break; // ループを終了
                }
                
                String[] values = line.split(","); // カンマで分割
                for (String value : values) {
                    System.out.println("値: " + value.trim()); // 各値を表示
                }
            }
        } catch (IOException e) {
            e.printStackTrace(); // エラー処理
        }
    }
}

ユーザーからのフィードバックを収集する

アプリケーションのユーザーからのフィードバックを収集するために、複数行の入力を利用することができます。

ユーザーが自由に意見や感想を入力できるようにし、その内容を後で分析することが可能です。

これらの応用例から、複数行の入力がどのように活用できるかがわかります。

テキストファイルへの保存、データの解析、ユーザーからのフィードバック収集など、さまざまなシナリオで役立つ技術です。

次のセクションでは、複数行入力の注意点とベストプラクティスについて解説します。

注意点とベストプラクティス

複数行の文字列をキーボードから入力する際には、いくつかの注意点とベストプラクティスがあります。

これらを理解し、適切に実装することで、より安全で効率的なプログラムを作成することができます。

以下に、主な注意点とベストプラクティスを示します。

入力の終了条件を明確にする

  • 空行で終了: ユーザーが入力を終了するための明確な条件を設けることが重要です。

一般的には、空行を入力することで終了する方法がよく使われます。

  • 特定のキーワード: 例えば、 exitdone といった特定のキーワードを入力することで終了する方法も考えられます。

エラーハンドリングを行う

  • 例外処理: 入力処理中にIOExceptionが発生する可能性があるため、適切な例外処理を行うことが重要です。

これにより、プログラムが予期しないエラーでクラッシュするのを防ぎます。

  • 入力の検証: ユーザーからの入力が期待される形式であるかを検証することも重要です。

例えば、数値を期待している場合は、数値以外の入力を拒否する処理を追加します。

リソースの管理

  • ScannerやBufferedReaderのクローズ: 入力処理が終了したら、ScannerBufferedReaderを必ず閉じるようにしましょう。

これにより、リソースのリークを防ぎます。

  • try-with-resources文: Java 7以降では、try-with-resources文を使用することで、リソースを自動的に閉じることができます。

これを活用することで、コードがより簡潔になります。

ユーザーインターフェースの配慮

  • 入力のガイド: ユーザーに対して、どのように入力すればよいかを明示的に示すメッセージを表示することが重要です。

これにより、ユーザーが迷わずに入力できるようになります。

  • フィードバックの提供: 入力が完了した後、ユーザーに対して入力内容を確認するためのフィードバックを提供することも良いプラクティスです。

これにより、ユーザーは自分の入力が正しく処理されたかを確認できます。

パフォーマンスの考慮

  • 大量のデータ処理: 大量のデータを扱う場合、BufferedReaderを使用することで、パフォーマンスを向上させることができます。

Scannerは便利ですが、パフォーマンスが求められる場合はBufferedReaderを選択することを検討しましょう。

これらの注意点とベストプラクティスを考慮することで、複数行の文字列入力をより安全かつ効率的に行うことができます。

次のセクションでは、これまでの内容を振り返り、まとめます。

まとめ

この記事では、Javaにおける複数行の文字列をキーボードから入力する方法について、ScannerクラスやBufferedReaderクラスを用いた具体的な実装例を通じて解説しました。

また、複数行入力の応用例や注意点、ベストプラクティスについても触れ、実際のプログラムに役立つ情報を提供しました。

これらの知識を活用して、実際のプロジェクトやアプリケーションにおいて、より効果的なユーザーインターフェースを実現してみてください。

関連記事

Back to top button