2 lb876864380 lb876864380 于 2016.04.03 11:26 提问

为生么这个程序几个编译程序都无法显示呀??求大神解释下!!

public class HelloWorld{
public static void main(String[] args) {
int num = 999;
int count = 0;

for(;(num/10)>1; count++)
{
;

}

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


}

}

4个回答

bealing
bealing   Rxr 2016.04.03 11:31

for(;(num/10)>1; count++)
{
;
}
这是个死循环

Wei_Smile
Wei_Smile   2016.04.03 11:38

同意楼上,你看看你的for循环里面

for(;(num/10)>1; count++)


这里判断num/10是不是大于1,一开始你给num赋值999,它除以10肯定比1大,你后面还count++,只会越来越大,这个循环就走不出来,
也就无法执行到下面的语句

Wei_Smile
Wei_Smile 回复毕小宝: 嗯, 没细看
一年多之前 回复
wojiushiwo945you
wojiushiwo945you 其实这个真正的问题是num的值始终是999,跟count没有关系,它修正为for(;num>1;count++,num=num/10)
一年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.03 12:04

for循环体中应该进行重新赋值,你是想计算输入数是几位数的话,直接修正下循环条件就可以了:

 public class HelloWorld {
    public static void main(String[] args) {
        int num = 999;
        int count = 0;

        for (; num > 1; count++) {
            num= num/10;
        }

        System.out.print("它是个" + count + "位的数");
    }

}
wojiushiwo945you
wojiushiwo945you 输出正确答案是3
一年多之前 回复
xionglangs
xionglangs   Rxr 2016.04.03 16:06

num/10=999/10,这个num值一直没变,也就是num/10>1会一直成立,你需要把num/10赋值给新的num.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!