当前位置: 首页 > 知识库问答 >
问题:

非法转换异常?

东郭鸿福
2023-03-14

我在代码上收到一条错误消息,以查找支付200美元佣金的员工的总工资。一旦输入了所有员工的总销售额,就应该打印出属于每个不同薪酬类别的员工销售额。下面是代码:

public static void main(String[]args){
    Scanner input = new Scanner(System.in);
    int basePay = 200; //$200 starting amount of pay
    int totalPay = 0; //total amount the employee will receive

    System.out.print("Enter the amount of employees: ");
    int employee = input.nextInt();

    int[]sales = new int[9]; //four different categories

    for(int i = 0; i < employee; i++){
        System.out.println("Enter the current employee's gross sales: ");
        int grossSales = input.nextInt();

        totalPay = (int) (basePay + (grossSales * 0.09)); //uses the formula for finding pay, and then casts it to an int

        if(totalPay <= 299.99){
            sales[0]++;
        }
        else if(totalPay <= 399.99){
            sales[1]++;
        }
        else if(totalPay <= 499.99){
            sales[2]++;
        }
        else if(totalPay <= 599.99){
            sales[3]++;
        }
        else if(totalPay <= 699.99){
            sales[4]++;
        }
        else if(totalPay <= 799.99){
            sales[5]++;
        }
        else if(totalPay <= 899.99){
            sales[6]++;
        }
        else if(totalPay <= 999.99){
            sales[7]++;
        }
        else if(totalPay >= 1000){
            sales[8]++;
        }
    }
    System.out.println("Total Sales\tAmount of employees");

    for(int i = 0; i < 11; i++){
        System.out.printf("%02d-%02d: ", i * 100, i * 100 + 99.99);
        System.out.print("\t" + sales[i]);
    }

    System.out.println("Checking array: " + Arrays.toString(sales));
}

这是我收到的确切错误消息:

00-Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
    at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
    at java.util.Formatter$FormatSpecifier.print(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.io.PrintStream.format(Unknown Source)
    at java.io.PrintStream.printf(Unknown Source)
    at chapter7.Sales_comission.main(Sales_comission.java:54)

我相信这与双重转换有关,但我不确定这有什么问题?有没有人能帮我搞清楚哪里出问题了(它编译没有错误)?我也尝试过只有双精度(包括数组),但这并没有解决问题。

共有1个答案

轩辕涵亮
2023-03-14

“d”表示整数,请将其更改为“f”或将第二个参数强制转换为整数。

 System.out.printf("%02d-%02d: ", i * 100, (int)(i * 100 + 99.99));

有关详细信息,请参阅Java字符串格式化程序文档。

 类似资料:
  • 我正在从头开始创建JMeter测试计划。这是我的代码: 当我执行这段代码时,我的Test2。jmx已经创建。 接下来,我尝试通过使用以下命令运行Test2.jmx通过Jmetm的非GUI模式: 杰米。sh-n-t测试2。jmx Jmeter没有运行我的测试计划,而是抛出以下错误: 我不知道如何解决这个问题?原因-消息是空白的?我应该怎么做才能在没有上述错误的情况下执行我的测试计划? 2) 你能看看

  • 我有一把钥匙: 信息: 十六进制的hmac输出: 因此,如果我创建一个新的BigInteger(测试),如: 如果我想得到十六进制值,比如: 我明白了: 问题出在哪里?或者,如何从消息中计算hmac-sha256并使用Beginning中的大整数。 key、message和hmac是字节数组。 如果我尝试将字节“11010100”转换为Bigintger,它会转换为负“-101100”为什么Big

  • 我正在处理一个非常简单的point类,但我得到了一个错误,我无法确定字符串/双值问题发生的位置或如何修复它。 编辑 我忘记添加我正在接收的错误:

  • 问题内容: 您好,我正在使用developenig Java Web应用程序,并且在尝试使用hibernate模式获取数据时遇到了下一个异常 这里stacktrace 这是我的代码 这是我的对象 这是映射 我正在使用Oracle Weblogic 12c服务器 问题答案: 通过将我的pom.xml中的依赖项更改为较旧的版本4.3.4进行了修复。最终错误已在4.3.4。最终版本更改为4.2.7。 不

  • Deal和DealDocument类是相同的。Deal document类如下所示: 你觉得问题可能是什么?它似乎是随机出现的,好像它工作正常,但在时间内系统退化 *更新*:这是我如何配置模型映射器的:ModelMapper.GetConfiguration().SetAmbiguity忽略(false).SetFieldMatchingEnabled(true).SetMatchingStrat

  • 问题内容: 在使用Hibernate 4.0.0 CR7迁移到Spring Framework 3.1.0 RC1之后,出现以下异常 2011-12-08 / 11:48:38.425 / EST [Thread-17]错误上下文初始化失败org.springframework.beans.factory.BeanCreationException:创建名称为org.springframework