Java 调试错误:不兼容的类型:可能存在从double到int的有损转换
我是java的初学者,我已经编写了这段代码。当我尝试运行它时,它会不断显示错误,如:Java 调试错误:不兼容的类型:可能存在从double到int的有损转换,java,debugging,Java,Debugging,我是java的初学者,我已经编写了这段代码。当我尝试运行它时,它会不断显示错误,如: 错误:不兼容的类型:可能存在从double到int的有损转换 错误:找不到符号 有人能解释一下,作为一个初学者,我该如何解决这个问题吗 public class JavaJoeWeek{ public static void main (String[] args){ int x = 1; int Money = 200; int Twenty,
- 错误:不兼容的类型:可能存在从double到int的有损转换
- 错误:找不到符号
public class JavaJoeWeek{
public static void main (String[] args){
int x = 1;
int Money = 200;
int Twenty, Ten, Toonie, Loonie, Quarter, Dime, Nickel = 0;
while (x < 8){
System.out.println("Today is day " + x + " of the week");
if (x == 1) {
int Cost = 30;
int TotalCost = Cost * 1.15;
System.out.println("The cost of the shoes is $" + TotalCost);
Money = Money - TotalCost;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 2) {
int CeilingArea = 12 * 7;
System.out.println("The area of the celing is " + CeilingArea + " square meters");
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 3) {
int PaintCost = CeilingArea * 1.13;
System.out.println("The paint cost $" + PaintCost);
Money = Money - PaintCost;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 4) {
int Gas = 36.40 / 0.45;
System.out.println("Java Joe filled up his tank with " + Gas + " liters of gas");
Money = Money - Gas;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 5) {
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 6) {
Money = Money - 23;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 7) {
if (Money > 20) {
Money = Money - 20;
Twenty = Twenty + 1;
}
else{
System.out.println("Java Joe has " + Twenty + " twenty dollar bills");
}
if (Money > 10) {
Money = Money - 10;
Ten = Ten + 1;
}
else{
System.out.println("Java Joe has " + Ten + " ten dollar bills");
}
if (Money > 2) {
Money = Money - 2;
Toonie = Toonie + 1;
}
else{
System.out.println("Java Joe has " + Toonie + " toonies");
}
if (Money > 20) {
Money = Money - 20;
Loonie = Loonie + 1;
}
else{
System.out.println("Java Joe has " + Loonie + " loonies");
}
if (Money > 0.25) {
Money = Money - 0.25;
Quarter = Quarter + 1;
}
else{
System.out.println("Java Joe has " + Quarter + " quarters");
}
if (Money > 0.1) {
Money = Money - 0.1;
Dime = Dime + 1;
}
else{
System.out.println("Java Joe has " + Dime + " dimes");
}
if (Money > 0.05) {
Money = Money - 0.05;
Nickel = Nickel + 1;
}
else{
System.out.println("Java Joe has " + Nickel + " nickels");
}
System.out.println("There is $" + Money + " left after the change" );
}
else{
System.out.println();
}
x = x + 1;
}
}
}
公共类JavaJoeWeek{
公共静态void main(字符串[]args){
int x=1;
国际货币=200;
整数二十,十,图尼,鲁尼,四分之一,一角,镍=0;
而(x<8){
System.out.println(“今天是一周中的天”+x+);
如果(x==1){
国际成本=30;
整数总成本=成本*1.15;
System.out.println(“鞋子的成本是$”+总成本);
金钱=金钱-总成本;
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==2){
室内天花板面积=12*7;
System.out.println(“天花板面积为“+天花板面积+”平方米”);
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==3){
内部油漆成本=天花板面积*1.13;
System.out.println(“油漆成本$”+油漆成本);
金钱=金钱-成本;
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==4){
内部气体=36.40/0.45;
println(“Java Joe用“+气体+”升气体填充他的油箱”);
金钱=金钱-汽油;
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==5){
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==6){
金钱=金钱-23;
System.out.println(“剩余预算为$”+货币);
}
否则{
System.out.println();
}
如果(x==7){
如果(货币>20){
金钱=金钱-20;
二十=二十+1;
}
否则{
System.out.println(“Java Joe有“+二十+”二十美元钞票”);
}
如果(货币>10){
金钱=金钱-10;
十=十+1;
}
否则{
System.out.println(“Java Joe有“+10+”十美元钞票”);
}
如果(货币>2){
金钱=金钱-2;
Toonie=Toonie+1;
}
否则{
println(“JavaJoe有”+Toonie+“toonies”);
}
如果(货币>20){
金钱=金钱-20;
鲁尼=鲁尼+1;
}
否则{
println(“JavaJoe有”+Loonie+“loonies”);
}
如果(货币>0.25){
货币=货币-0.25;
季度=季度+1;
}
否则{
println(“Java Joe有“+Quarter+”Quarter”);
}
如果(货币>0.1){
货币=货币-0.1;
一角=一角+1;
}
否则{
println(“JavaJoe有“+Dime+”dimes”);
}
如果(货币>0.05){
货币=货币-0.05;
镍=镍+1;
}
否则{
println(“Java Joe有“+镍币+”镍币”);
}
System.out.println(“更改后还有$”+货币+);
}
否则{
System.out.println();
}
x=x+1;
}
}
}
非常感谢你 这些编译错误发生在代码中的特定节点上;您的编辑器将用红色波浪下划线突出显示这些内容。如果你没有一个聪明的编辑器,强烈地考虑得到一个(我推荐Eclipse或iTelLJ);但即使这样,javac也会打印相关的行,然后打印一行带有
^
符号的行,以指向行的确切部分
这就是问题所在。那就。。读取错误,将其应用于错误指向的节点
例如,不兼容类型:从double到int
的可能有损转换就是它的意思:您正在获取类型为double
的值,并试图将其分配给int
,这可能会导致信息丢失
int
是一个介于正负20亿之间的整数。双精度具有小数部分。因此,如果成本
为3,则3*1.15
为3.45
,并且。。现在怎么办TotalCost
不能是3.45
(它是一个整数;只能是3或4)
您可以通过告诉编译器您希望它做什么来修复此问题。例如,inttotalcost=(int)(Cost*1.15)
正在询问编译器:请显式地将这个double转换为int,java语言规范随后指出,这个特定的策略将删除十进制位(因此,如果是正数,则向下取整,如果是负数,则向上取整)
下一个错误与“找不到符号”有关。您使用的是一个符号(可能是一个标识符或其他一些单词,表示代码中的其他内容),而编译器不知道您在说什么
例如,int PaintCost=CeilingArea*1.13
中的CeilingArea
不是已知的符号。看起来很奇怪,对吧CeilingArea
就在您的公司里