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

大神帮看看 哪里有问题 为什么运行不了

package laianxi;

public class laianxi{

public static void main(String[] args){

int num = 999;

int count = 0;

for(int i=1;i<10;i++){

    count++;

    int j=1;

    j*=10;

    if((num/j>0)&&(num/j<10))

    {

        System.out.println("它是个"+count+"位的数!");

    }


}






}

}


提问者:伪硕 2015-07-25 13:45

个回答

  • 深白
    2015-07-25 15:24:14

    如果只针对你的代码和思路,在for循环里num和j永远不变化,里面的if判断语句一直是恒定的false或true。

    int num=999;
    int count=0;
    for(int i=1;i<10;i++){
       count++;
       int j=1;
       j=j*10;
       if((num/j>0)&&(num/j<10)){
            System.out.println("它是个"+count+"位的数!");
       }
       num/=j;     //加上
    }

    但即便像上述这样添加之后又有一些问题和不合适的地方,1、num作为被判断数,不宜被改变;2、因为初始赋值,这样的算法会使得结果比实际位数小1;3、for循环在这里毫无用处,用while语句更方便,如果实在要用for:

    int num=999;
    int count=1;
    int j=10;
    for(;(num/j)!=0;j*=10){
        count++;
    }
    System.out.println("它是个"+count+"位的数!");