繁体   English   中英

不兼容的类型:boolean 不能转换为 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 已经解释了为什么会抛出错误。 我将讨论一个更全面的解决方案。

这有几个问题

  1. 在从用户获取输入之前查找变量的值
  2. 布尔值被分配给双重问题(正如你所提到的)
  3. 不必要的 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");
    }

这样做是做计算gpay = Regpay * hoursTotalpay = OThour + gpay用户输入一个值后hours 此外,这通过检查小时数是否大于 40,然后执行所需的计算来简化您的 if 语句结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM