public class Problem9 {
public static boolean isTriplet( int a, int b, int c ){
if( a*a + b*b == c*c && a < b && b < c )
return true;
else
return false;
}
public static boolean isEqual( int a, int b, int c ){
int z = a + b + c;
if( z == 1000 )
return true;
else
return false;
}
public static void main(String[] args){
for( int a=0; a < 200; a++ ){
for( int b=0; b < 200; b++ ){
for( int c=0; c < 200; c++ ){
if( isEqual(a,b,c) && isTriplet(a,b,c))
System.out.print( a +" "+ b + " "+ c );
}
}
}
}
}
这不应该工作吗? 我无法弄清楚为什么这不起作用。 这两种方法都可以单独工作,但是当我运行时它仍然没有打印出来。
答案 0 :(得分:5)
a
,b
和c
始终小于200,a + b + c
将始终小于600,因此永远不会等于1000.所以{{1} }返回isEqual
。这足以使false
成为假。因此,如果您的程序没有打印任: - )
答案 1 :(得分:1)
如果你想找到一个满足isEqual(a,b,c)
和isTriplet(a,b,c)
的三元组,你必须增加你的循环范围。
将循环更改为:
for(int a=0; a < 1000; a++ ){
for(int b=0; b < 1000; b++ ){
for(int c=0; c < 1000; c++ ){
if( isEqual(a,b,c) && isTriplet(a,b,c))
System.out.print( a +" "+ b + " "+ c );
}
}
}
将产生一个三元组:
200 375 425
答案 2 :(得分:0)
200 + 200 + 200 = 600,它永远不会像程序中那样等于1000所以它不会给出任何输出!所以它没有任何输出!