public class A
{
public static void main(String[] args)
{
int x,y,z;
for(x=0;x<100;x++)
{ for(y=0;y<100;y++)
{for(z=0;z<100;z++)
{ if( 5x+3y+(1/3)z=100 && x+y+z=100 )
{ System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("z="+z);
}
}
}
}
}
}
为什么运行时总说不对呢?
还有这个代码是不是太麻烦了?能不能请高手帮忙优化一下?
谢谢。
----------------解决方案--------------------------------------------------------
public class A
{
public static void main(String[] args)
{
int x,y,z;
for(x=0;x<=20;x++)
{ for(y=0;y<34;y++)
{for(z=0;z<=100;z++)
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)
{
System.out.println("x="+x +" y="+y+" z="+z);
}
}
}
}
}
}
----------------解决方案--------------------------------------------------------
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)
和
{ if( 5*x+3*y+(1/3)*z==100 && x+y+z==100&&z%3==0 )
这两个部分为什么不一样?
下面的为什么不对?
----------------解决方案--------------------------------------------------------
5x+3y+(1/3)z=10你可是这么写的啊!
----------------解决方案--------------------------------------------------------
第二种方式是错的,运行来看似乎没有把1/3*Z的值加到100的总数内。
为什么?
谢谢。
----------------解决方案--------------------------------------------------------
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)
和
{ if( 5*x+3*y+(1/3)*z==100 && x+y+z==100&&z%3==0 )
这两个部分为什么不一样?
下面的为什么不对?
注意(1/3)*z,这一句话,首先是(1/3)先运算,因为()的优先级比*的优先级高,然尔(1/3)==0,再乘上Z,仍然等于0,所以+(1/3)*z,就相当于没有加!
----------------解决方案--------------------------------------------------------
我理解的可能不对,还请楼下的补充,纠正
----------------解决方案--------------------------------------------------------
public class A
{
public static void main(String[] args)
{
int a;
for(a=1;a<=100;a++)
{ if((1/3)*a>0)
System.out.println("a="+a);
}
}
}
应该是对的了,楼上的。看看这个程序,没有输出。所以(1/3)*a恒为0。
----------------解决方案--------------------------------------------------------
楼上所说的(1/3)*a 这个式子中,1 3 a这三个数据都是int型的,所得的结果只保留整数部分,所以这个式子总是得0,因为1/3不到1,保留结果只能是0
----------------解决方案--------------------------------------------------------