class SM
{
  public static void main(String[] args)
  {
    double a=0.0,b=0.0,c=0.0,d=0.0;
    System.out.println("Result as fallows:");
//for part-----------------------------------------------------------
    System.out.println("\t--for--");
    for(a=0.0;a<=8.0;a+=0.5)
    {
      for (b = 0.0; b <= 8.0; b += 0.5)
      {
        for (c = 0.0; c <= 8.0; c += 0.5) 
        {
          d = 8.0 - a - b - c;
          if (a * b * c * d == 8.0 && a + b + c + d == 8.0) 
          {
            System.out.print("==>>:  ");
            System.out.println("a=" + a + ",b=" + b + ",c=" + c + ",d=" + d);
            //System.exit(0);
          }
        }
      }
    }
//while part-----------------------------------------------------------
    System.out.println("\t--while--");
    a = 0.0;
    while (a <= 8.0) 
    {
      b = 0.0;
      while(b <= 8.0)
      {
        c = 0.0;
        while(c <= 8.0)
        {
          d = 8.0 - a - b - c;
          if (a * b * c * d == 8.0 && a + b + c + d == 8.0) 
          {
            System.out.print("==>>:  ");
            System.out.println("a=" + a + ",b=" + b + ",c=" + c + ",d=" + d);
            System.exit(0);
          }
          c+=0.1;
        }
        b+=0.1;
      }
      a+=0.1;
    }
  }
}上面代码都是想要找出abcd的和与积都等于8的四个数就好像 1 1 2 4 四个数 1+2+1+4=1*2*1*4=8但是出现一个问题就是:无论用for还是while循环,当a+=1.0步进和a+=0.5  0.25 步进(也就是for(a=0.0;a<=8.0;a+=0.5){})都可以求出结果就是a=1.0,b=1.0,c=2.0,d=4.0 以及位置互换,但如果将步进改成0.2 或 0.1 就得不到结果..这是为什么??在C++里也是同样的问题!!救救..............