関数

Java – mainメソッドを引数を指定して呼び出す・実行する方法

Javaのmainメソッドは、プログラムのエントリーポイントとしてpublic static void main(String[] args)の形式で定義されます。

このメソッドを引数付きで実行するには、コマンドライン引数を使用します。

実行時にjavaクラス名 引数1 引数2 ...の形式で指定すると、これらの引数がargs配列に格納されます。

例えば、java MyClass hello worldと実行すると、args[0]"hello"args[1]"world"が格納されます。

mainメソッドに引数を渡す方法

Javaのmainメソッドは、プログラムのエントリーポイントとして機能します。

このメソッドは、コマンドライン引数を受け取ることができ、プログラムの実行時に外部からデータを渡すことが可能です。

mainメソッドのシグネチャは以下のようになります。

public static void main(String[] args)

ここで、String[] argsはコマンドライン引数を格納する配列です。

プログラムを実行する際に、引数を指定することで、args配列に値が格納されます。

コマンドライン引数の指定方法

コマンドライン引数は、プログラムを実行する際に、以下のように指定します。

java App arg1 arg2 arg3

この場合、args配列には以下のように値が格納されます。

インデックス
0arg1
1arg2
2arg3

以下は、コマンドライン引数を受け取り、出力するサンプルコードです。

ファイル名はApp.javaとします。

import java.util.Arrays; // 配列を扱うためのインポート
public class App {
    public static void main(String[] args) {
        // 引数の数を表示
        System.out.println("引数の数: " + args.length);
        
        // 引数の内容を表示
        System.out.println("引数の内容: " + Arrays.toString(args));
    }
}

上記のコードを実行する際に、以下のように引数を指定します。

java App Hello World

この場合の出力結果は次のようになります。

引数の数: 2
引数の内容: [Hello, World]

このように、mainメソッドに引数を渡すことで、プログラムの動作を柔軟に変更することができます。

コマンドライン引数の実例

コマンドライン引数は、プログラムの実行時に外部からデータを渡すための便利な手段です。

ここでは、具体的な実例を通じて、コマンドライン引数の使い方を解説します。

例1: 数値の合計を計算するプログラム

この例では、コマンドライン引数として渡された数値の合計を計算するプログラムを作成します。

引数として数値を受け取り、それらを合計して出力します。

以下のコードをApp.javaというファイル名で保存します。

import java.util.Arrays; // 配列を扱うためのインポート
public class App {
    public static void main(String[] args) {
        // 引数が指定されていない場合の処理
        if (args.length == 0) {
            System.out.println("数値を引数として指定してください。");
            return;
        }
        // 合計を計算するための変数
        int sum = 0;
        // 引数をループ処理して合計を計算
        for (String arg : args) {
            try {
                // 引数を整数に変換
                int number = Integer.parseInt(arg);
                sum += number; // 合計に加算
            } catch (NumberFormatException e) {
                // 数値に変換できない場合のエラーメッセージ
                System.out.println(arg + " は数値ではありません。");
            }
        }
        // 合計を表示
        System.out.println("合計: " + sum);
    }
}

このプログラムを実行する際に、以下のように数値を引数として指定します。

java App 10 20 30

この場合の出力結果は次のようになります。

合計: 60

また、数値以外の引数を指定した場合の出力結果も確認できます。

java App 10 20 abc

この場合の出力結果は次のようになります。

abc は数値ではありません。
合計: 30

このように、コマンドライン引数を利用することで、プログラムに柔軟性を持たせることができます。

引数の内容に応じて異なる処理を行うことが可能です。

引数を処理する方法

Javaのmainメソッドで受け取ったコマンドライン引数は、String[] argsとして配列に格納されます。

引数を処理するためには、配列の要素にアクセスし、必要に応じてデータ型の変換やエラーチェックを行うことが重要です。

ここでは、引数を処理する方法について詳しく解説します。

引数の取得とループ処理

引数は配列として渡されるため、通常はforループを使用して各引数にアクセスします。

以下のように、引数の数を確認しながら処理を行うことができます。

for (String arg : args) {
    // 各引数に対する処理
}

データ型の変換

引数はすべてString型で渡されるため、数値や他のデータ型として使用する場合は、適切な型に変換する必要があります。

例えば、整数に変換する場合はInteger.parseInt()メソッドを使用します。

int number = Integer.parseInt(arg); // Stringをintに変換

エラーチェック

引数の処理中に、数値以外の文字列が渡された場合や、引数が不足している場合など、エラーが発生する可能性があります。

これを防ぐために、try-catchブロックを使用してエラーハンドリングを行います。

try {
    int number = Integer.parseInt(arg); // 変換処理
} catch (NumberFormatException e) {
    System.out.println(arg + " は数値ではありません。"); // エラーメッセージ
}

以下は、引数を処理して数値の合計を計算するプログラムのサンプルコードです。

ファイル名はApp.javaとします。

import java.util.Arrays; // 配列を扱うためのインポート
public class App {
    public static void main(String[] args) {
        // 引数が指定されていない場合の処理
        if (args.length == 0) {
            System.out.println("数値を引数として指定してください。");
            return;
        }
        // 合計を計算するための変数
        int sum = 0;
        // 引数をループ処理して合計を計算
        for (String arg : args) {
            try {
                // 引数を整数に変換
                int number = Integer.parseInt(arg);
                sum += number; // 合計に加算
            } catch (NumberFormatException e) {
                // 数値に変換できない場合のエラーメッセージ
                System.out.println(arg + " は数値ではありません。");
            }
        }
        // 合計を表示
        System.out.println("合計: " + sum);
    }
}

このプログラムを実行する際に、以下のように数値を引数として指定します。

java App 5 15 25

この場合の出力結果は次のようになります。

合計: 45

数値以外の引数を指定した場合の出力結果も確認できます。

java App 10 20 xyz

この場合の出力結果は次のようになります。

xyz は数値ではありません。
合計: 30

このように、引数を適切に処理することで、プログラムの柔軟性と堅牢性を高めることができます。

IDEを使用した引数の指定方法

Javaプログラムを開発する際、IDE(統合開発環境)を使用すると、コマンドライン引数を簡単に指定することができます。

ここでは、一般的なIDEであるEclipseとIntelliJ IDEAを例に、引数の指定方法を解説します。

Eclipseでの引数の指定方法

  1. プロジェクトを開く: Eclipseを起動し、引数を指定したいプロジェクトを開きます。
  2. 実行構成を開く: メニューバーから RunRun Configurations... を選択します。
  3. 引数の設定: 左側のリストから実行したいクラスを選択し、 Arguments タブをクリックします。
  4. 引数を入力: Program arguments フィールドに、引数をスペースで区切って入力します。
  5. 実行: 設定が完了したら、 Run ボタンをクリックしてプログラムを実行します。

IntelliJ IDEAでの引数の指定方法

  1. プロジェクトを開く: IntelliJ IDEAを起動し、引数を指定したいプロジェクトを開きます。
  2. 実行構成を開く: 画面右上の実行構成ドロップダウンメニューから Edit Configurations... を選択します。
  3. 引数の設定: 左側のリストから実行したいクラスを選択し、 Program arguments フィールドに引数をスペースで区切って入力します。
  4. 実行: 設定が完了したら、 OK ボタンをクリックし、実行ボタンを押してプログラムを実行します。

引数の指定例

例えば、引数として Hello World を指定したい場合、以下のように入力します。

  • Eclipse: Hello World
  • IntelliJ IDEA: Hello World

このように、IDEを使用することで、コマンドライン引数を簡単に指定し、プログラムを実行することができます。

IDEの機能を活用することで、開発効率を向上させることが可能です。

引数を使用した応用例

コマンドライン引数を活用することで、Javaプログラムに柔軟性を持たせ、さまざまな機能を実装することができます。

ここでは、引数を使用したいくつかの応用例を紹介します。

例1: ファイルの読み込みと表示

コマンドライン引数を使用して、指定されたファイルの内容を読み込み、表示するプログラムを作成します。

引数としてファイル名を受け取り、その内容を出力します。

以下のコードをApp.javaというファイル名で保存します。

import java.io.BufferedReader; // バッファードリーダーのインポート
import java.io.FileReader; // ファイルリーダーのインポート
import java.io.IOException; // 入出力例外のインポート
public class App {
    public static void main(String[] args) {
        // 引数が指定されていない場合の処理
        if (args.length == 0) {
            System.out.println("ファイル名を引数として指定してください。");
            return;
        }
        String fileName = args[0]; // 引数からファイル名を取得
        // ファイルの内容を読み込む
        try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line); // 行を表示
            }
        } catch (IOException e) {
            System.out.println("ファイルの読み込み中にエラーが発生しました: " + e.getMessage());
        }
    }
}

このプログラムを実行する際に、以下のようにファイル名を引数として指定します。

java App sample.txt

指定したファイルの内容が出力されます。

例2: 簡易計算機

コマンドライン引数を使用して、簡単な計算を行うプログラムを作成します。

引数として2つの数値と演算子を受け取り、計算結果を表示します。

以下のコードをApp.javaというファイル名で保存します。

public class App {
    public static void main(String[] args) {
        // 引数が不足している場合の処理
        if (args.length < 3) {
            System.out.println("使用法: java App <数値1> <演算子> <数値2>");
            return;
        }
        double num1 = Double.parseDouble(args[0]); // 1つ目の数値
        String operator = args[1]; // 演算子
        double num2 = Double.parseDouble(args[2]); // 2つ目の数値
        double result = 0; // 結果を格納する変数
        // 演算子に応じた計算
        switch (operator) {
            case "+":
                result = num1 + num2;
                break;
            case "-":
                result = num1 - num2;
                break;
            case "*":
                result = num1 * num2;
                break;
            case "/":
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    System.out.println("ゼロで割ることはできません。");
                    return;
                }
                break;
            default:
                System.out.println("無効な演算子です。使用可能な演算子: +, -, *, /");
                return;
        }
        // 計算結果を表示
        System.out.println("計算結果: " + result);
    }
}

このプログラムを実行する際に、以下のように引数を指定します。

java App 10 + 5

この場合の出力結果は次のようになります。

計算結果: 15.0

このように、コマンドライン引数を使用することで、さまざまな機能を持つプログラムを簡単に実装することができます。

引数を活用することで、ユーザーからの入力を受け取り、動的に処理を行うことが可能です。

まとめ

この記事では、Javaのmainメソッドに引数を渡す方法や、コマンドライン引数を活用したさまざまなプログラムの実例について解説しました。

引数を使用することで、プログラムの柔軟性が向上し、ユーザーからの入力に基づいて動的に処理を行うことが可能になります。

ぜひ、実際にコマンドライン引数を使ったプログラムを作成し、引数の処理や応用方法を体験してみてください。

関連記事

Back to top button