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++里也是同样的问题!!救救..............
{
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++里也是同样的问题!!救救..............
解决方案 »
- 如何将某个文件夹下所有的文件名都读出来呢?
- Exception in thread "main" java.lang.NullPointerException问题求助
- JSP运行出错
- Java 双向链表的实现
- Java中类型的转换(虽然没有分,但是还是希望各位大侠,能帮我下下,先谢谢了)
- 数据传输问题
- 一个窗口上的最小化按钮~~~如何将它设置为无效状态或是点击时窗口不会最小化?????急
- java读取session变量问题----在线等待
- 怎样查找classpath中所有符合条件的properties文件?在线等待!!!!!!
- java的jdk打不开怎么办
- 关于数组的调用 大家帮忙谢谢
- 如何用java在word中替换指定的字符串?
建议用Math.abs(a * b * c * d) -8 <0.0000001
Math.abs(a + b + c + d)-8 <0.0000001
Math.abs(a + b + c + d-8) <0.0000001