精度损失 - >必需的double但编译器需要int?

时间:2013-04-18 08:58:32

标签: java

我是java的初学者,遇到了这个错误。

编写一个名为pay的方法,该方法接受TA工资的实数和TA本周工作小时数的整数,并返回支付TA的金额。例如,看涨期权(5.50,6)应该返回33.0。

对于8岁以上的任何小时,TA应该获得1½正常工资的“加班”工资。例如,通话费(4.00,11)应该返回(4.00 * 8)+(6.00 * 3)或50.0。 / p>

public double pay(double x,int y){
    int sum=0;
    double hours=8.0;
    if(y>hours){
       sum=(y-hours)*(1.5*x) + (hours*x);

    }
   return sum;
}

错误:

You have a mismatch between data types. This often occurs when you try to store a real number (double) into a variable or parameter that is an integer (int).
possible loss of precision
found   : double
required: int
       sum=(y-hours)*(1.5*x) + (hours*x);
                             ^
1 error
19 warnings

但错误是指向+号。它出了什么问题? 它说发现:双倍。但我希望我的输出是双倍的。但它表示需要int。

2 个答案:

答案 0 :(得分:5)

由于sumint并且您在方法中返回sum,这就是您收到错误的原因。

public double pay(double x,int y){
    double sum=0;
    double hours=8.0;
    if(y>hours){
       sum=(y-hours)*(1.5*x) + (hours*x);

    }
   return sum;
}

对于第二个错误,如果您查看类Mathpi()不存在,则必须调用Math类的静态变量,因此它应该是:

public double area(double x){
    x=Math.PI*Math.pow(x,2);
    return x;

}

答案 1 :(得分:0)

sum的数据类型是int,而您的方法期望返回数据类型为double。