只是将x,y,z定义在主方法里和定义在for循环里,为什么一个运行是空白一个运行正常
1.
for (x = 0;x <= 20;x++ ){
for (y = 0; y <= 33; y++){
for (z = 0; z <=100;z++ ){
if (x + y + 3*z == 100 && 5*x + 3*y + z == 100 ){
System.out.println("公鸡" + x +"个");
System.out.println("母鸡" + y +"个" );
System.out.println("小鸡" + 3*z + "个");
运行结果
公鸡0个
母鸡25个
小鸡75个
公鸡4个
母鸡18个
小鸡78个
公鸡8个
母鸡11个
小鸡81个
公鸡12个
母鸡4个
小鸡84个
Process finished with exit code 0
2.
int x = 0 ;
int y = 0;
int z = 0;
for (;x <= 20;x++ ){
for (; y <= 33; y++){
for (; z <=100;z++ ){
if (x + y + 3*z == 100 && 5*x + 3*y + z == 100 ){
System.out.println("公鸡" + x +"个");
System.out.println("母鸡" + y +"个" );
System.out.println("小鸡" + 3*z + "个");
运行为空白
1和2不等价,因为内层循环每次重新运行时都会初始化对应的变量为0
1和下面的代码等价
int x = 0;
int y = 0;
int z = 0;
for (; x <= 20; x++) {
y=0;
for (; y <= 33; y++) {
z=0;
for (; z <= 100; z++) {
if (x + y + 3 * z == 100 && 5 * x + 3 * y + z == 100) {
System.out.println("公鸡" + x + "个");
System.out.println("母鸡" + y + "个");
System.out.println("小鸡" + 3 * z + "个");
}
}
}
}
最内层的循环完后,z就已经变成101了,没有重新赋值为0,就进不去了,同样第二层循环也是。