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”呢?谢谢指点!
因为num=num/10会执行两遍,第三次num/10==0,所以会满足if里面的判定条件,执行输出语句,如果count初始化为0的话,此时count==2,而此时会执行if里面的break,会跳出整个循环,所以count初始化必须为1,换句话说,else后面的语句运行了两次,if后面的语句运行了一次,而for循环仅仅执行两次。
难道是因为if对括弧中表达式进行判断的同时已将“num / 10”的值赋给了num?