为了账号安全,请及时绑定邮箱和手机立即绑定

输出结果错误,帮忙看看是哪里出的问题了。

package com.flow;


import java.util.Scanner;


public class testDemo {


public static void main(String[] args) {

       int count = 0;

       //判断一个数(小于十位)的位数,并输出结果。

        //该数字除以10e8结果不为0,则该数字为9位数字的数,以此类推。

       System.out.println("请输入一个1到999999999之间的数字!");//输入数字

       Scanner sc=new Scanner(System.in);

       count=sc.nextInt();

       if (count/10e8!=0) {

            System.out.println(count+"是一个9位数字的数");

       }else if(count/10e7!=0) {

            System.out.println(count+"是一个8位数字的数");

      }else if(count/10e6!=0) {

            System.out.println(count+"是一个7位数字的数");

       }else if(count/10e5!=0) {

            System.out.println(count+"是一个6位数字的数");

       }else if(count/10e4!=0) {

            System.out.println(count+"是一个5位数字的数");

       }else if(count/10e3!=0) {

            System.out.println(count+"是一个4位数字的数");

       }else if(count/10e2!=0) {

           System.out.println(count+"是一个3位数字的数");

       }else if(count/10!=0) {

            System.out.println(count+"是一个2位数字的数");

       }else if(count!=0) {System.out.println(count+"是一个个位数字的数");}

          else System.out.println(count+"输入错误!");

              

}

}


正在回答

1 回答

java中数据运算,跟数据类型有关。在前面的判断条件中使用e,也就是科学计数法,为double,计算结果会转为double类型数据,所以不可能为零。到10的时候,是整数和整数相除,结果也会返回整数,即没有小数部分。若果传入的值是各位,计算后就是0了。所以最后会输入错误。在此处,可以通过count/10是否等于0来求整数位数。

int num = 0;

while(count/10!=0){

    num+=1;

    count = count/10;

}

 System.out.println(count+"是一个"+num+"位数字的数");

0 回复 有任何疑惑可以回复我~
#1

大口袋_Hello 提问者

这个求位数的while循环可以用if else改写嘛?刚试了下用(int)强制转换double类型的输出结果变为int还是输出了错误的结果。
2017-10-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

输出结果错误,帮忙看看是哪里出的问题了。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信