請教我方法2的改進(jìn)
public class HelloWorld{
? public static void main(String[] args){
// ? ?方式1:通過百度搜索到冪運(yùn)算法加入的
? ? ? ?int num = 999;
? ? ? ?int count = 0;
? ? ? ?for (int i = 0; i <= 10; i++) {
? ??
? ? ? ?double result = Math.pow(10,i);
? ? ?
? ? ? ? ? if(num - result >= 0) {
? ? ??
? ? ? ? ? ? count = count +1;?
? ? ? ??
? ? ? ?}
}
//方式2:此法有個缺點(diǎn):沒在for之前把count+1,最終位數(shù)會少1 ? ?
/** ? ? ? int num = 999;
? ? ? ?int count = 0;
? ? ? ?int dig = 1;
? ? ? ?
? ? ? if(num > -1000000000 && num < 1000000000){
? ? ? ? ? ? ? ? count = 1;?
? ? ? ? ? ? }?
? ? ? ?else {
? ? ? ? ? ?System.out.println("輸入的值必須在10位以內(nèi)");
? ? ? ?}?
? ? for (int i = 1; i < 10; i++) {
? ? ? ? ? ? dig = (dig * 10);
? ? ? ? ? ??
? ? ? ? ? ? if(num - dig >= 0) {
? ? ? ? ? ? ? count = count +1;?
? ? ? ? ?// ?System.out.println(dig); ? ?
? ? ? ? ? ? }
}
**/ ? ? ??
? ? System.out.println("它是個" + count +"位的數(shù)!");
? } ? ?
} ? ?
2019-02-05
是的,之前我看錯了。方法二因為dig第一次循環(huán)值為10,所以第一次循環(huán)若>=,count結(jié)果應(yīng)為2.所以把count=0改為count=num==0 ? 0 : 1;然后若超10位要求重輸,剩下代碼不變。這樣應(yīng)該行吧
2019-02-02
方法二的結(jié)果count就是比位數(shù)少1,所以在輸出之前進(jìn)行count++,再輸出count就可以了呀