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+"输入错误!");
}
}
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+"位数字的数");