我正在尝试创建一个嵌套的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 vs 3和4
-1和-1 vs 3和4
-1和0 vs 3和4
-1和1 vs 3和4
-1和2 vs 3和4
0和-2 vs 3和4
0和-1 vs 3和4
0和0 vs 3和4
0和1 vs 3和4
0和2 vs 3和4
1和-2 vs 3和4
1和-1 vs 3和4
1和0 vs 3和4
1和1 vs 3和4
1和2 vs 3和4
答案 0 :(得分:1)
我认为第一个中缺少括号是副本中的问题。粘贴,但如果这是你真正的代码,你就会遇到问题。
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");
}
}
两件事。首先,您应该打印i
和j
,其次您还应该考虑负值。如果for
导致
-a
的{{1}}将会失败
a = -1
不符合条件,不会进行迭代。通过执行for (int i = 1; i <= -1; i++)
,您可以获得输入的绝对值,并且可以从该负值到正值进行迭代。如果Math.abs
和a
都是肯定的,b
方法将返回相同的值(为abs
和a
指定相同的值)。< / p>
b
和c
应该做些什么还有待观察。你想要的输出就是你把它们留下来,所以我现在不会碰它们。
答案 1 :(得分: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");