问答详情
源自:4-15 编程练习

求大佬指点为何本代码中关于for循环下面的if循环仅执行了两次?

package imooc;
public class HelloWorld {	
  public static void main(String[] args){ 	  
    int num = 999;	  
    for(int count = 1;count >=0&&count <= 999999999;count++){		  
      if(num / 10 == 0){			  
        System.out.println("它是个" + count + "位的数!");			  
          break;		  
      }else{			   
         num = num / 10;		  
      }	  
    }	
  }
}

     首先我认为代码中if循环会执行三次,所以我在for循环中将变量count初始化为0,三次循环后输出“它是个3位的数!”,从而实现任务需求。然而实际运行后发现if循环仅执行两次,所以我将for循环中count变量重新初始化为1方使得程序得以输出正确结果。所以求各位大佬指点为何if执行了两次后变量num的值便满足if循环后的判断条件“num / 10 == 0”呢?谢谢指点!

提问者:龙王大毛球 2019-02-26 09:57

个回答

  • 张小白菜
    2019-02-26 10:28:45
    已采纳


    因为num=num/10会执行两遍,第三次num/10==0,所以会满足if里面的判定条件,执行输出语句,如果count初始化为0的话,此时count==2,而此时会执行if里面的break,会跳出整个循环,所以count初始化必须为1,换句话说,else后面的语句运行了两次,if后面的语句运行了一次,而for循环仅仅执行两次。

  • 龙王大毛球
    2019-02-26 10:02:43

    难道是因为if对括弧中表达式进行判断的同时已将“num / 10”的值赋给了num?