輸出結(jié)果錯(cuò)誤,幫忙看看是哪里出的問題了。
package com.flow;
import java.util.Scanner;
public class testDemo {
public static void main(String[] args) {
? ?????int count = 0;
? ?????//判斷一個(gè)數(shù)(小于十位)的位數(shù),并輸出結(jié)果。
????????//該數(shù)字除以10e8結(jié)果不為0,則該數(shù)字為9位數(shù)字的數(shù),以此類推。
? ?????System.out.println("請(qǐng)輸入一個(gè)1到999999999之間的數(shù)字!");//輸入數(shù)字
? ?????Scanner sc=new Scanner(System.in);
? ?????count=sc.nextInt();
? ?????if (count/10e8!=0) {
? ????????? System.out.println(count+"是一個(gè)9位數(shù)字的數(shù)");
????? ?}else if(count/10e7!=0) {
? ????????? System.out.println(count+"是一個(gè)8位數(shù)字的數(shù)");
??????}else if(count/10e6!=0) {
? ????????? System.out.println(count+"是一個(gè)7位數(shù)字的數(shù)");
????? ?}else if(count/10e5!=0) {
? ? ????????System.out.println(count+"是一個(gè)6位數(shù)字的數(shù)");
? ?????}else if(count/10e4!=0) {
? ????????? System.out.println(count+"是一個(gè)5位數(shù)字的數(shù)");
? ?????}else if(count/10e3!=0) {
? ????????? System.out.println(count+"是一個(gè)4位數(shù)字的數(shù)");
? ?????}else if(count/10e2!=0) {
? ???????? System.out.println(count+"是一個(gè)3位數(shù)字的數(shù)");
? ?????}else if(count/10!=0) {
? ????????? System.out.println(count+"是一個(gè)2位數(shù)字的數(shù)");
? ?????}else if(count!=0) {System.out.println(count+"是一個(gè)個(gè)位數(shù)字的數(shù)");}
???????? ?else System.out.println(count+"輸入錯(cuò)誤!");
? ????????? ??
}
}
2017-10-29
java中數(shù)據(jù)運(yùn)算,跟數(shù)據(jù)類型有關(guān)。在前面的判斷條件中使用e,也就是科學(xué)計(jì)數(shù)法,為double,計(jì)算結(jié)果會(huì)轉(zhuǎn)為double類型數(shù)據(jù),所以不可能為零。到10的時(shí)候,是整數(shù)和整數(shù)相除,結(jié)果也會(huì)返回整數(shù),即沒有小數(shù)部分。若果傳入的值是各位,計(jì)算后就是0了。所以最后會(huì)輸入錯(cuò)誤。在此處,可以通過count/10是否等于0來求整數(shù)位數(shù)。
int num = 0;
while(count/10!=0){
????num+=1;
????count = count/10;
}
?System.out.println(count+"是一個(gè)"+num+"位數(shù)字的數(shù)");