线程“main”中的异常java.util.IllegalFormatConversionException:d!= java.lang.String [英] Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String

查看:2956
本文介绍了线程“main”中的异常java.util.IllegalFormatConversionException:d!= java.lang.String的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java的新手,我不确定如何解决我在尝试运行此代码时遇到的错误:

I'm new to Java and I'm not sure how to fix the error I'm getting when trying to run this code:

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但是一旦我输入它并按回车所有我得到它一个错误,似乎无法看到我做错了什么。任何人都可以开导我吗?

I'm trying to print how many digits the number has, by checking whether the number is >= 10, >= 100 and so on... I run the code and I'm able to input an int but once I input it and press enter all I get it an error and can't seem to see what I have done wrong. Can anyone enlighten me?

推荐答案

问题在于:

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

%d 格式说明符需要一个整数作为第二个参数传递给 printf ,但是通过连接数字数字。 ,你实际上传递了一个字符串

the %d format specifier requires an integer to be passed as second parameter to printf, but by concatenating number and "digits.", you actually passed a String.

固定版本:

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

请注意,您不能同时打印原始数字和位数,因为您用另一个在数字变量中。也许使用两种不同的。

note that you cannot print both the original number and the number of digits, because you overwrote one with the other in the number variable. Maybe use two different ones.

这篇关于线程“main”中的异常java.util.IllegalFormatConversionException:d!= java.lang.String的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆