不兼容类型:布尔值不能转换为双精度(错误) import javax.swing.JOptionPane; 导入java.util.Scanner; 公费{ 静态扫描仪; 公共静态void main(字符串[]args) { 双倍薪酬=8; double OThour=Regpay*1.5; 双倍小时=0; 双倍gpay=Regpay*小时; 双倍总工资=其他四倍+gpay; 扫描仪输入=新扫描仪(System.in); System.out.println(“工作时间少于40小时的正常工资为每小时8英镑”); System.out.println(“如果工人工作超过40小时,他们的工资将是一倍半”); System.out.println(“请输入您的姓名”); 字符串名称=sc.nextLine(); System.out.println(“你这个月工作了多少小时”); 小时数=sc.nextDouble(); System.out.println(“你加班了多少小时”); OThour=sc.nextDouble(); 如果(小时=41) Totalpay=gpay+other>=1; } } }
我在不兼容类型:布尔值不能转换为双精度(错误) import javax.swing.JOptionPane; 导入java.util.Scanner; 公费{ 静态扫描仪; 公共静态void main(字符串[]args) { 双倍薪酬=8; double OThour=Regpay*1.5; 双倍小时=0; 双倍gpay=Regpay*小时; 双倍总工资=其他四倍+gpay; 扫描仪输入=新扫描仪(System.in); System.out.println(“工作时间少于40小时的正常工资为每小时8英镑”); System.out.println(“如果工人工作超过40小时,他们的工资将是一倍半”); System.out.println(“请输入您的姓名”); 字符串名称=sc.nextLine(); System.out.println(“你这个月工作了多少小时”); 小时数=sc.nextDouble(); System.out.println(“你加班了多少小时”); OThour=sc.nextDouble(); 如果(小时=41) Totalpay=gpay+other>=1; } } },java,boolean,double,bluej,Java,Boolean,Double,Bluej,我在Totalpay=gpay+OThour>=1行中得到错误我不知道该怎么办,我一直试图改变周围的事物,但我总是得到相同的错误 您想要的答案(我想)是测试Othere是否大于1,将其添加到TotalPay中。为此,将TotalPay=TotalPay+Othurs>=1替换为 import javax.swing.JOptionPane; import java.util.Scanner; public class pay{ static Scanner sc; public stat
Totalpay=gpay+OThour>=1行中得到错误代码>我不知道该怎么办,我一直试图改变周围的事物,但我总是得到相同的错误 您想要的答案(我想)是测试Othere是否大于1,将其添加到TotalPay中。为此,将TotalPay=TotalPay+Othurs>=1替换为
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;
}
}
}
您正在组合两种不兼容的表达式类型
if(OTHours>=1){
TotalPay = gPay + OTHour;
}
使用操作顺序,“gpay+OThour>=1”是两个表达式:
Totalpay = gpay + OThour >=1;
结果是一个布尔答案(真/假),不能解析为双精度,因此不能存储在TotalPay中
其次,您的结果将不符合预期-您正在使用的变量(gpay)已初始化为0,并且从未更改。@purpleorb和@Jaboyc已经解释了引发错误的原因。我将讨论一个更全面的解决方案
这有几个问题
在从用户获取输入之前查找变量的值
将布尔值分配给双重问题(如您所述)
不必要的if语句结构
您可以将代码更改为,如下所示,以解决这些问题:
gpay + OThour : (the sum of two doubles)
(result of gpay + OThour) >= 1 : (a boolean expression)
这样做的目的是在用户向hours
中输入值后,计算gpay=Regpay*hours
和Totalpay=other+gpay
。此外,通过检查小时数是否大于40,然后执行所需的计算,这简化了if语句结构。您想用该行完成什么?看起来您正在比较gpay+OThour
以查看它是否大于或等于1
gpay+OThour>=1
检查gpay+OThour
是否大于或等于1,并返回true
或false
,不能将其添加到双倍
,因为它不是一个数字。这大部分是与我的老师一起完成的,但目的是将加班时间(或小时)添加到gpay中,以获得当月支付给员工的总金额。其目的还在于,如果员工工作41小时或以上,则他在40小时内每工作一小时应获得8 x 1.5的报酬。我应将0更改为什么值?欢迎!如果您发现某个答案很有用,并且它回答了您的问题,请记住单击绿色复选标记将其标记为已接受的答案!
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");
}