2014-10-18 238 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); 
} 
相关问题