1. ホーム
  2. ジャワ

[解決済み] [Solved] java.lang.ArrayIndexOutOfBoundsException: 0

2022-03-03 01:05:29

質問

本でjavaを勉強しています。この練習問題があるのですが、うまく動作させることができません。これは、javaのクラスDoubleを使用して2つのdoubleを追加します。Eclipseでこのコードを実行しようとすると、タイトルにあるようなエラーが発生します。

public static void main(String[] args) {

    Double d1 = Double.valueOf(args[0]);
    Double d2 = Double.valueOf(args[1]);
    double result = d1.doubleValue() + d2.doubleValue();
    System.out.println(args[0] + "+" + args[1] + "=" + result);

}

解決方法は?

問題点

これは ArrayIndexOutOfBoundsException: 0 というのは、インデックス 0 は、配列の有効なインデックスではありません。 args[] ということは、配列が空であることを意味します。

この特殊なケースで main() メソッドでは、次のような意味になります。 引数が渡されない をコマンドラインで実行します。

可能な解決策

  • コマンドラインからプログラムを実行する場合、コマンドに2つの引数を渡すことを忘れないでください。

  • Eclipseでプログラムを実行する場合、実行構成でコマンドライン引数を設定する必要があります。以下へ Run > Run configurations... を選択し、その後に Arguments タブで実行の設定を行い、いくつかの引数を プログラム引数 という領域があります。

注意点 は、十分な数の引数が与えられない場合に処理する必要があります。 のように、メインメソッドの冒頭に記述してください。

if (args.length < 2) {
    System.err.println("Not enough arguments received.");
    return;
}

これは、プログラムをクラッシュさせるのではなく、優雅に失敗させるものです。