不兼容类型:布尔不能转换为double(错误)
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;
我不知道该怎么办,我一直试图改变周围的事情,但我不断收到同样的错误!!!!不兼容类型:布尔不能转换为double(错误)
您正在寻找的答案(我假设)是测试OTHoure是否大于1,并将其添加到TotalPay。要完成此操作,请使用
替换TotalPay = TotalPay + OTHours> = 1if(OTHours>=1){
TotalPay = gPay + OTHour;
}
大部分工作都是由我的老师完成的,但其目的是为了让员工支付当月支付的总金额,将时长(OThours)添加到gpay中。目的还在于,如果雇员工作了41小时或更长时间,那么他应该在工作40小时内每工作小时支付8 x 1.5的费用。 –
您正在组合两个不兼容的表达式类型。
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,并且永远不会被改变。
我应该将0更改为什么值? –
@purpleorb和@ Jaboyc已经解释了错误被抛出的原因。我要谈一个更全面的解决方案。
有几个问题与此
- 从用户
- 布尔被分配到双重问题(如你所提到的)
- 不必要的if语句让输入之前查找变量值结构
您可以将代码更改为以下来解决这些问题:
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");
}
这样做是在用户将值输入到hours
之后进行计算gpay = Regpay * hours
和Totalpay = OThour + gpay
。此外,这可以通过检查小时数是否大于40来简化if语句结构,然后再执行所需的计算。
谢谢你这么多帮助 –
欢迎你!如果您发现答案有帮助,并回答您的问题,请记住点击绿色复选标记将其标记为接受的答案! – Bimde
你想用这条线完成什么?看起来你正在比较'gpay + OThour',看它是否大于或等于'1'。 – rgettman
'gpay + OThour> = 1'检查'gpay + OThour'是否大于或等于1,并返回'true'或'false',由于它不是一个'double'数。 –