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 与 3 和 4

-1 和 0 与 3 和 4

-1 和 1 与 3 和 4

-1 和 2 与 3 和 4

0 和 -2 与 3 和 4

0 和 -1 与 3 和 4

0 和 0 与 3 和 4

0 和 1 与 3 和 4

0 和 2 与 3 和 4

1 和 -2 与 3 和 4

1 和 -1 与 3 和 4

1 和 0 与 3 和 4

1 和 1 与 3 和 4

1 和 2 与 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");
    }
}

两件事情。首先,您应该打印ij其次您还应该考虑负值。您for的 ' 将失败,因为-aifa = -1会导致

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

条件将不满足,迭代将不会发生。通过这样做Math.abs,您可以获得输入的绝对值,并且可以进行从该负值到正值的迭代。如果两者ab都是正数,则该abs方法将返回相同的值(分配ab具有它们已经具有的相同值)。

无论应该做什么,c还有d待观察。你想要的输出说你让它们保持原样,所以我现在不会碰它们。

于 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 回答