首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

简单的逻辑有关问题,帮忙看上

2012-12-17 
简单的逻辑问题,帮忙看下。public static void test(int i){//1,2if(i3){}else{for(int b0b3b++){Sys

简单的逻辑问题,帮忙看下。
public static void test(int i){//1,2

  if(i==3){

   

  }else{

   for(int b=0;b<3;b++){

    System.out.println("|===============i====================|"+i);

    test(i+1);

    System.out.println("|=======copy====i=========copy=======|"+i);

   }

  }

 }

main方法{

    ?test(1);

}



输出结果为:

|===============i====================|1

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|=======copy====i=========copy=======|1

|===============i====================|1

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|=======copy====i=========copy=======|1

|===============i====================|1

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|===============i====================|2

|=======copy====i=========copy=======|2

|=======copy====i=========copy=======|1





为什么没有i被赋值为3??
我认为,既然i可以被赋值成2
也可以继续被赋值,可是跟踪后明显发现i只会被赋值一次,为什么??
[最优解释]
看不出你那里有赋值3,

当i=3时你的程序已经over了
[其他解释]
=======copy====i=========copy=======
[其他解释]
不可能,i==3的if语句中,你根本没输出任何东西。

test(i+1); 并没有赋值能力,又不是  i+=1  或者 ++i 之类的写法。
[其他解释]

引用:
看不出你那里有赋值3,

当i=3时你的程序已经over了


帮忙运行下,看下。
确实是i等于3程序over了.但是确实也做给i赋值2+1的操作了啊,
按理说可以输出

[其他解释]
3


[其他解释]
引用:
不可能,i==3的if语句中,你根本没输出任何东西。

test(i+1); 并没有赋值能力,又不是  i+=1  或者 ++i 之类的写法。


就算这么写
 if(i==3){
   ++i;
  }
一样不会被赋值。调试下~
 我只是没弄懂for循环跳出后为什么变量不改变,知识点模糊,
[其他解释]
晕死人,自己去看看java的值传递方式.
test(i+1);
不会把i加1.
要想得到3,test(i++);

热点排行