Java 无法解释的不可编译源代码错误
正在尝试运行以下程序,但不断出现错误。我不确定哪里出了错。如蒙协助,将不胜感激Java 无法解释的不可编译源代码错误,java,Java,正在尝试运行以下程序,但不断出现错误。我不确定哪里出了错。如蒙协助,将不胜感激 run: Welcome to Mike and Diane's Pizza Enter your first name: Mike Pizza Size (inches ) Cost: 10 $10.99 12 $12.99 14 $14.99 16 $16.99 What size pizza would you like? 10, 12, 14, or 16 (enter the number
run:
Welcome to Mike and Diane's Pizza
Enter your first name: Mike
Pizza Size (inches ) Cost:
10 $10.99
12 $12.99
14 $14.99
16 $16.99
What size pizza would you like?
10, 12, 14, or 16 (enter the number only): 12
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
Java结果:1
构建成功(总时间:22秒)
这不会编译,因为默认情况下,12.99
是一个double
,当您尝试自动将double
转换为float
时,编译器不喜欢它。将setCost
的参数更改为double
,或者在所有需要成为浮点值的文本后放置F
,例如
order.setCost(12.99F);
[你真的不应该用任何一个来表示货币价值,而是用BigDecimal
来表示,因为float
和double
不能准确地表示小数位数。但是,如果你用double
,你可能必须先处理数十亿美元的数字,然后才能做出不同的结果nce。请将其放在列表中,以便以后学习。]请格式化您的代码。并删除行号。这与您当前的问题无关,但您应该阅读可能的副本。我在代码中没有看到任何会导致此异常的内容。请删除您的.class文件,然后尝试重新编译。(顺便说一下,我正在给你们班的一个学生做同样的家庭作业。祝你好运。:)哦!我的脑子被炸了。谢谢你,这帮了我很多忙!实际上,对于大多数简单的金融编程来说,你也不需要BigDecimal。将你的现金表示为便士而不是小数美元,你可以使用整数——它没有浮点数或BigDecimal的任何复杂性或成本。“定点数字",这意味着仅为打印而重新格式化的整数比其他任何一种整数都更简单、更快、更便宜。@keshlam是的,您只需记住自己对其进行缩放。Ada语言内置了定点数字,其中数字表示为整数,但编译器会跟踪缩放因子。这应该不难设计一个类在Java中做同样的事情,如果还没有这样做的话。
class Pizza {
public void setCost(float f) { ... }
// other stuff
}
order.setCost(12.99);
order.setCost(12.99F);