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

不知道为什么我的代码会出现“非法格式转换异常”错误?

苏鸿才
2023-03-14

我很确定错误是由最后一行引起的。从我所知,它不满意我使用变量“%d”。但这不是整数的有效输入吗?

import java.util.Scanner;

public class total_cost {
    public static void main(String[] args) {

        int TVs;
        int VCRs;
        int controller;
        int CD;
        int recorder;
        double TV_price;
        double VCR_price;
        double controller_price;
        double CD_price;
        double recorder_price;
        double tax;
        {
            TV_price = 400.00;
            VCR_price = 220.00;
            controller_price = 35.20;
            CD_price = 300.00;
            recorder_price = 150.00;
            tax = .0825;

            Scanner in = new Scanner(System.in);
            {
                System.out.printf("How many TV's were sold? ");
                TVs = in.nextInt();

                System.out.printf("How many VCR's were sold? ");
                VCRs = in.nextInt();

                System.out.printf("How many remote controller's were sold? ");
                controller = in.nextInt();

                System.out.printf("How many CD players were sold? ");
                CD = in.nextInt();

                System.out.printf("How many Tape Recorder's were sold? ");
                recorder = in.nextInt();

                System.out.printf("QTY\tDESCRIPTION\tUNIT PRICE\tTOTAL PRICE\n");
                System.out.printf("%d", TVs + "\tTelevision\t%f", TV_price
                        + "\t" + tax * TV_price + "%f", TV_price);
            }
        }
    }
}

错误消息:

Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4011)
    at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2725)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2677)
    at java.util.Formatter.format(Formatter.java:2449)
    at java.util.Formatter.format(Formatter.java:2383)
    at java.lang.String.format(String.java:2781)
    at total_cost.main(total_cost.java:37)

共有3个答案

滕无尘
2023-03-14

由于这一行,您将获得此异常:

System.out。printf(“%d”,TVs“\tLevision\t%f”,TV_price“\t”tax*TV_ price“%f”,TV_price)

由于< code> ,因此< code > TVs " \电视\t%f"正在尝试进行算术运算。

您应该格式化输出,然后提供值。

例如:<code>System.out。printf(“%d%s”,TVs,“\tTelevision\”

傅涵忍
2023-03-14

您应该决定是使用< code>printf()还是< code>println(),哪一个似乎更适合您:

System.out.println(3 + "\tTelevision\t" + TV_price + "\t" + tax * TV_price + " " + TV_price);

使用<code>printf()

System.out.printf("%d number %s string\n", 3, "hi");
公西繁
2023-03-14

您传递的是一个字符串,而不是一个整数。应该是这样的:

System.out.printf("%d\tTelevision\t%.2f\t%.2f,%.2f", TVs, TV_price,tax * TV_price, TV_price);

PS:我可以自由地用2位小数位来格式化价格。

 类似资料:
  • 给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?

  • 我想做张桌子。我希望这些数字向左对齐。我不熟悉格式化,不知道为什么会出现错误。

  • 我是Spring的新人。我学习,但在学习过程中我出错了。我为Spring使用基于XML的配置,这里是编译错误: 线程“main”org . spring framework . beans . factory . beancreationexception中出现异常:创建在类路径资源[Beans.xml]中定义的名为“helloGeorgia”的bean时出错:设置属性值时出错;嵌套异常为org

  • 我试图使用SQlite,但出现了以下错误: e/sqlite ;异常:“)”附近:语法错误(代码1 SQLITE_ERROR):,编译时:如果不存在则创建表联系人(_id整数主键自动增量、名称文本、组织文本、电话整数、地址文本、电子邮件文本、web_ad文本、inf文本、生日文本NULL,) 我猜应该是我的代码的这一部分: 这很奇怪,因为一开始SQL_CREATE_ENTRIES如下所示,并且没有

  • 在我开始添加更多存储库之前,我的代码只使用一个存储库包就可以正常工作 主数据源配置类: 存储库: 服务层: 服务实施: 实体类: 其他实体和存储库已被排除在外。

  • 请看一下这个: 为什么在TreeSet中添加元素时没有得到类转换异常或其他东西 列表到树集的转换产生:“java.lang.ClassCastException:MyClass不能被强制转换为java.lang.Comparable”