2014-10-18 115 views
0

我是新來的Java,我不知道如何解決我試圖運行此代碼時得到的錯誤:線程「主」異常java.util.IllegalFormatConversionException:d!= java.lang.String

import java.util.Scanner; 
public class P3_3 
{ 

    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Please enter a number: "); 
     int number = in.nextInt(); 
     if (number < 0) number *= -1; 
     if (number >= 10 && number < 100) 
     { 
      number = 2; 
     } 
     else if (number >= 100 && number < 1000) 
     { 
      number = 3; 
     } 
     else if (number >= 1000 && number < 10000) 
     { 
      number = 4; 
     } 
     else if (number >= 10000 && number < 100000) 
     { 
      number = 5; 
     } 
     else if (number >= 100000 && number < 1000000) 
     { 
      number = 6; 
     } 
     else if (number >= 1000000 && number < 10000000) 
     { 
      number = 7; 
     } 
     else if (number >= 10000000 && number < 100000000) 
     { 
      number = 8; 
     } 
     else if (number >= 100000000 && number < 1000000000) 
     { 
      number = 9; 
     } 
     else 
     { 
      System.out.println("Number is greater than 10 billion."); 
     } 
     System.out.printf("%d has ", number + "digits."); 
    } 
} 

我想打印多少有多少位了,通過檢查數量是否>= 10, >= 100等等... 我運行代碼,我可以輸入一個int,但一旦我輸入它並按下輸入所有我得到它的錯誤,似乎無法看到我做錯了什麼。任何人都可以啓發我嗎?一起

System.out.printf("number has %d digits ", number); 

嘗試添加的所有字符串,並使用符即

System.out.printf("blah %d blah ", value). 

回答

2

的問題是在這裏:

0

改變你的最後的printf到

System.out.printf("%d has ", number + "digits."); 

%d格式說明符需要一個整數作爲第二個參數傳遞給printf,但通過連接number"digits.",您確實通過了String

修正版本:

System.out.printf("has %d digits ", number); 

注意,你不能同時打印原來的號碼和位數,因爲你在number變量改寫一個與其他。也許使用兩個不同的。

0

和其他人一樣,問題出現在打印聲明中。更好的方法,而不是使用所有的if語句,你應該使用log10方法:

public static void main(String[] args){ 
     Scanner in = new Scanner(System.in); 
     System.out.print("Please enter a number: "); 
     int number = in.nextInt(); 
     if (number < 0) number *= -1; 
     System.out.printf("%d has %d digits\n", number, (int)Math.log10(number) + 1); 
} 
相關問題