为什么以下代码不起作用?

时间:2015-12-12 00:37:41

标签: java

我想知道为什么这段代码没有产生预期的结果2小时。 如果我输入3个整数,比如3,4和5,它应该给我所有27个可能的总和(假设数字可以是正数,负数或零。)

所以它应该产生以下内容:

-3-4-5 = -12

-3-4 + 0 = -7

-4-4 + 5 = 3

依旧......

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

  for (int k = -4; k <= -2; k++)
     for (int i = -4; i <= -2; i++)
        for (int j = -4; j <= -2; j++)
       {  

         if (k == -4)
           a = -a;
         else if(k == -3)
           a = 0;
         else 
            a = a;

        if (i == -4)
           b = -b;
         else if(i == -3)
           b = 0;
         else 
           b = b;


        if (j == -4)
           c = -c;
         else if(j == -3)
           c = 0;
         else 
            c = c;

         System.out.println(a + b + c);
     }

1 个答案:

答案 0 :(得分:0)

您不应该修改abc,因为这只会意味着您无法在第一次循环后使用此值。您想要了解添加,减去或忽略每个值时会发生什么。这与将其乘以+1,-1或0相同。

简而言之。

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

for (int ma = -1; ma <= +1; ma ++)
  for (int mb = -1; mb <= +1; mb ++)
    for (int mc = -1; mc <= +1; mc ++)
       System.out.println(ma * a + mb * b + mc * c);

这将打印出27个值,但它们可能并非都是唯一的。

如果您必须盯着代码超过2分钟,那么您应该使用调试器来帮助调试代码。