Java 调试错误:不兼容的类型:可能存在从double到int的有损转换

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,

我是java的初学者,我已经编写了这段代码。当我尝试运行它时,它会不断显示错误,如:

  • 错误:不兼容的类型:可能存在从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
就在您的公司里