问答详情
源自:-

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

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+"输入错误!");

              

}

}


提问者:大口袋_Hello 2017-10-29 20:40

个回答

  • 慕粉3617928
    2017-10-29 21:13:27

    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+"位数字的数");