![](/img/trans.png)
[英]error: incompatible types: double cannot be converted to double[]
[英]Incompatible types: boolean cannot be converted to double (error)
import javax.swing.JOptionPane;
import java.util.Scanner;
public class pay{
static Scanner sc;
public static void main (String[]args)
{
double Regpay = 8;
double OThour = Regpay * 1.5;
double hours = 0;
double gpay = Regpay * hours;
double Totalpay = OThour + gpay;
Scanner input = new Scanner(System.in);
System.out.println("Normal pay for hours worked less than 40hrs will be, £8.00 per hour");
System.out.println("If workers work more than 40hrs, their pay will be time and a half");
System.out.println("please enter your name");
String name = sc.nextLine();
System.out.println("How many hours did you work this month");
hours = sc.nextDouble();
System.out.println("How many hours overtime did you work");
OThour = sc.nextDouble();
if (hours<=40){
Totalpay = gpay;
System.out.print("You are not entitled to overtime pay");
}else{
if (hours>=41)
Totalpay = gpay + OThour >=1;
}
}
}
我在Totalpay = gpay + OThour >=1;
线上收到错误Totalpay = gpay + OThour >=1;
我不知道该怎么办,我一直在尝试改变周围的事物,但我一直遇到同样的错误!!!!
您正在寻找的答案(我认为)是测试 OTHoure 是否大于 1,将其添加到 TotalPay。 为此,请将 TotalPay = TotalPay + OTHours >=1 替换为
if(OTHours>=1){
TotalPay = gPay + OTHour;
}
您正在组合两种不兼容的表达式类型。
Totalpay = gpay + OThour >=1;
使用操作顺序,“gpay + OThour >=1”是两个表达式:
gpay + OThour : (the sum of two doubles)
(result of gpay + OThour) >= 1 : (a boolean expression)
这样做的结果是一个布尔答案(真/假),它无法解析为双精度值,因此无法存储在 TotalPay 中。
其次,您的结果不会像预期的那样 - 您正在使用的变量 (gpay) 已初始化为 0,并且永远不会更改。
@purpleorb 和 @Jaboyc 已经解释了为什么会抛出错误。 我将讨论一个更全面的解决方案。
这有几个问题
您可以将代码更改为如下以解决这些问题:
Scanner input = new Scanner(System.in);
System.out.println("Normal pay for hours worked less than 40hrs will be, £8.00 per hour");
System.out.println("If workers work more than 40hrs, their pay will be time and a half");
System.out.println("please enter your name");
String name = input.nextLine();
double hours = 0;
System.out.println("How many hours did you work this month");
hours = input.nextDouble();
double Regpay = 8;
double OThour = Regpay * 1.5;
double gpay = Regpay * hours;
double Totalpay = OThour + gpay;
if (hours>40){
Totalpay = gpay + (OThour- 1) * (hours - 40);
}else{
Totalpay = gpay;
System.out.print("You are not entitled to overtime pay");
}
这样做是做计算gpay = Regpay * hours
和Totalpay = OThour + gpay
用户输入一个值后hours
。 此外,这通过检查小时数是否大于 40,然后执行所需的计算来简化您的 if 语句结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.