0

私はJavaの初心者ですが、この単純なコードを実行しようとしています。このコードを機能させるために何をすべきかを誰かが説明してくれますか?

public class BinaryGCD {

public static int gcd(int p, int q) {
    if (q == 0) return p;
    if (p == 0) return q;

    // p and q even
    if ((p & 1) == 0 && (q & 1) == 0) return gcd(p >> 1, q >> 1) << 1;

    // p is even, q is odd
    else if ((p & 1) == 0) return gcd(p >> 1, q);

    // p is odd, q is even
    else if ((q & 1) == 0) return gcd(p, q >> 1);

    // p and q odd, p >= q
    else if (p >= q) return gcd((p-q) >> 1, q);

    // p and q odd, p < q
    else return gcd(p, (q-p) >> 1);
}

public static void main(String[] args) {
    int p = Integer.parseInt(args[0]);
    int q = Integer.parseInt(args[1]);
    System.out.println("gcd(" + p + ", " + q + ") = " + gcd(p, q));
}

}

Eclipse では、次のエラーが発生します。

スレッド「メイン」での例外 java.lang.ArrayIndexOutOfBoundsException: 0 at BinaryGCD.main(BinaryGCD.java:25)

4

6 に答える 6

0

このコードを機能させるために何をすべきかを誰かが説明してくれますか?

はい、プログラムに 2 つのパラメーターを渡す必要があります。パラメータを渡していないためargs、長さが 0 であるため、最初と 2 番目の値 (インデックス 0 と 1) にアクセスできません。

于 2013-01-17T10:17:05.167 に答える
0

コマンドライン引数を渡していない可能性が最も高いです。

 int p = Integer.parseInt(args[0]);
    int q = Integer.parseInt(args[1]);

Eclipse IDE チェックを使用している場合、コマンド ライン引数を渡す方法

于 2013-01-17T10:17:20.057 に答える
0

args[0]コマンドラインの最初の引数です。おそらく引数を渡していないので、問題です。このプログラムでは、2 つの引数が必要です。

Eclipse では、実行構成に移動し、プログラム引数テキストエリアに引数を追加する必要があります。

于 2013-01-17T10:18:08.400 に答える
0

コマンドライン引数を指定してプログラムを呼び出していません。使用java BinaryGCD 20 30 上記の例の 20 30 を他の数字に置き換えることができます

于 2013-01-17T10:18:36.677 に答える
0
int p = Integer.parseInt(args[0]);
int q = Integer.parseInt(args[1]);

プログラムには 2 つの引数が必要です。

第 1 引数: p

2 番目の引数: q

コマンドラインでクラスを実行してみてください:

java BinaryGCD 10 10
于 2013-01-17T10:19:02.710 に答える
0

このコードは 2 つの引数が渡されることを想定しており、Eclipse 内からプログラムを開始するときにそれらを渡していません。

コードは、ユーザーが引数を渡さないことを許可しません。それを見つけて、ユーザーフレンドリーなメッセージを表示しようとはしません:-)が、引数が渡されたと仮定します:-)

Java には、これらの引数が自動的に入力される配列 'args' があるため、配列内でこれらの引数を検索しようとすると、ArrayIndexOutOfBoundsException がスローされます (つまり、配列で 1 番目と 2 番目の要素を検索していますが、配列には 1 番目と 2 番目の要素がありません)

上記の回答は、Eclipse を使用して引数を渡す方法を説明しています。

于 2013-01-17T10:24:32.270 に答える