0

負の値から正の値まで、ユーザーが指定した範囲内のすべてのペアを生成するネストされた for ループを作成しようとしています。説明するのは少し難しいですが、ここに私が持っているコードがあります:

public class test method {

    public static void main (String[] args) {

    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    int c = 3;
    int d = 4;

    for (int i = -a; i <= a; i++)
        for (int j = -b; j <= b; j++) {

            System.out.println(a+" and "+b+" vs "+c+" and "+d+"\n");

        }

    }

}

コマンド ライン引数 1 と 2 を指定すると、目的の出力は次のようになります。

-1 と -2 対 3 と 4

-1 と -1 vs 3 と 4

-1 と 0 vs 3 と 4

-1 と 1 vs 3 と 4

-1 と 2 vs 3 と 4

0 と -2 対 3 と 4

0 と -1 vs 3 と 4

0 と 0 vs 3 と 4

0 と 1 vs 3 と 4

0 と 2 vs 3 と 4

1 と -2 対 3 と 4

1 と -1 vs 3 と 4

1 と 0 vs 3 と 4

1 と 1 vs 3 と 4

1 と 2 vs 3 と 4

4

2 に答える 2

1

最初の for に角かっこがないのは、コピー & ペーストの問題だと思いますが、それが実際のコードである場合は、そこに問題があります。

a = Math.abs(a);
b = Math.abs(b);

for (int i = -a; i <= a; i++) {
    for (int j = -b; j <= b; j++) {
        System.out.println(i+" and "+j+" vs "+c+" and "+d+"\n");
    }
}

2つのこと。まず第一に、印刷する必要がiありj、次に負の値も考慮する必要があります。あなたforの は失敗し-aますa = -1

for (int i = 1; i <= -1; i++)

条件が満たされないため、反復は行われません。そうMath.absすることで、入力の絶対値を取得し、その負の値から正の値への反復を行うことができます。aとの両方bが正の場合、メソッドは同じ値を返します (とに既にある同じ値をabs割り当てます)。ab

何をすべきかcdまだ見られていません。あなたの望む出力は、そのままにしておくと言っているので、今は触れません。

于 2012-10-12T23:16:14.787 に答える
0

合理的に見えますが、「-a」ビジネスの例外 (および間違った変数の出力)

a / bが常に正であると仮定して、試してください

for (int i = (0-a); i <= a; i++)
    for (int j = (0-b); j <= b; j++) {
        System.out.println(i+" and "+j+" vs "+c+" and "+d+"\n");
于 2012-10-12T23:09:23.470 に答える