2012-10-12 76 views
0

我正在尝试创建一个嵌套for循环,它将生成用户指定范围内的所有对,范围从负值到正值。这是一个有点很难解释,但这里是我的代码有:java - 通过值循环

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

-1和1比3和4

-1和2与3和4

0和-2 VS 3和4

0和-1 VS 3和4

0和0对3和4

0和1比3和4

0和2与3和4

1和-2 VS 3和4

1和-1 VS 3和4

1和0对3和4

1和1比3和4

1和2与3和4

+0

范围'[a,b]'和'[c,d]'?你为什么要打印这些数字(a,b,c,d)而不是'(i,j)'?我不确定我是否按照正确的问题来回答:| – amit

+0

你的代码出了什么问题?它是否编译失败(好吧,上面发布的确切代码不会编译,因为类名必须是单个标识符)?它抛出异常吗?它是否产生了错误的答案?我们无法了解您的想法以了解需要解决的问题。 –

回答

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"); 
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"); 
    } 
} 

两件事。首先你应该打印ij,第二你也应该考虑负值。您for的将失败,因为如果-aa = -1导致

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

这种情况不会得到满足,迭代不会发生。通过执行Math.abs,您可以获得输入的绝对值,并且可以执行从负值到正值的迭代。如果ab均为正值,则abs方法将返回相同的值(将ab分配给它们已具有的相同值)。

不管怎么处理cd还有待观察。你想要的输出说你离开他们,所以我现在不会碰他们。

+0

这非常有帮助。善于思考使输入绝对值。非常感谢您的帮助。 – Ted

+0

@Ted不客气。此外,请记住,如果点击问题评分下方的绿色勾号表示真实有用,您可以接受答案。 – Gamb