不兼容类型:布尔值不能转换为双精度(错误) 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");
        }