当前位置: 首页 > 知识库问答 >
问题:

用开关语句替换if/ett

欧阳狐若
2023-03-14

我们的老师让我们创建一个关于给定情况的java程序,即使用if/else的每小时工资率,这就是我得出的结果,我对此感到高兴(我只是一个初学者)。接下来的指令是用switch语句替换if/else。他还没有讨论switch语句。我试图搜索它们,但我无法理解。请帮忙。非常感谢。

这就是确切的指示:1。使用if/else构造编写一个程序,该程序将根据工作小时数计算人员工资。注意ff:工资率为每小时35菲律宾比索。40小时后的任何工作时间都将按正常小时工资的1.5倍支付工资。计算并显示正常工资、加班工资和总工资。2、用switch语句替换if/else构造,修改以前的工作。

   import java.util.Scanner;
    public class Payment2 {

    public static void main (String [] args){
    Scanner input=new Scanner(System.in);
    double hours;
    double Prph = 35;  //Prph means Pay rate per hour//


    System.out.println("Enter your working hours:");
    hours=input.nextDouble();
    if (hours <= 40){
        System.out.println("Your pay rate for the day is Php "+hours * Prph);
    }
    else if (hours > 40){
        double Ovtime= hours - 40;
        double NPay= hours * Prph;
        double OvPay= Ovtime * 52.5;

        System.out.println("Normal Pay:             Php "+         NPay);
        System.out.println("Overtime Pay:           Php " +       OvPay);
        System.out.println("\nYour total pay rate is: Php "+ (NPay+OvPay));
    }

  }
}

共有3个答案

张宝
2023-03-14
String TimeUsed = (hours<=40)?"Normal":"Overtime";
switch(TimeUsed)
{
case "Normal":
// 35 to pay 
break;

case "Overtime":
// 1.5 times of 35  to pay
break;

}

在您的情况下,可以尝试使用字符串、int、char或Enum来练习切换大小写

扈韬
2023-03-14

此外,在Java中,您不能直接定义switch的范围(看看这个QA:在Java中,在每种情况下都使用带有值范围的switch语句?),在这种特殊情况下,您可以尝试这样做,只是为了向您的老师表明,您确实理解开关运算符:

switch((int)(hours/40)) {
   case 0: case 1: {
     System.out.println("Your pay rate for the day is Php "+hours * Prph); 
     break; 
   }
   default: {
      double Ovtime= hours - 40;
      double NPay= hours * Prph;
      // other stuff
   }
}
阎淮晨
2023-03-14

我写下这篇文章也许是为了举例说明,但我认为你的问题需要重新审视。

int a = hours<=40?0:1;
switch(a){
    case 0:
        //do <=40 stuff.
        break;
    case 1:
       //do >40 stuff.
       break;
}

通过这种方式,您可以描述任意数量(当然是整数)的案例并打开它们。

 类似资料:
  • 我想用Python编写一个函数,根据输入索引的值返回不同的固定值。 在其他语言中,我会使用或语句,但Python似乎没有语句。在这个场景中,推荐的Python解决方案是什么?

  • 基于SO上的各种线程(例如。用设计模式替换多个If\Else或用模式替换if else语句)我知道我可以用< code >命令模式替换多个< code>if\else语句。 但对于我这个级别的人来说,答案远不是简单或详细的。我会有60个会阻塞。我做了一些研究,发现命令模式是最好的。搜索关于如何一步一步的教程似乎很难,因为我发现的都是复杂的事情。相信我,如果我没有在网上做大量的重新搜索和放弃,我不会

  • 我有一个if else语句,它可能会在不久的将来增长。 因为,这看起来已经很乱了,我想如果我能在这里应用任何设计模式会更好。我研究了战略模式,但我不确定这是否会降低其他条件。有什么建议吗?

  • 尝试基于列值替换字符串,获取错误值error:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 获取错误值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我只需要检查字符串,如果匹配,则用另一个列值替换它

  • null 代码如下所示: 和我想提高的班级: 我该怎么办?每个字段都在使用,但每个触发器都在使用。另外,这种情况有点特殊(OnFinalMethod需要参数)。基于上面的文章,我尝试重构这段代码,但没有成功。 你知道吗?:)

  • 问题内容: 告诉我 少于3个分支的交换机效率低下,请改用if语句。 这是为什么?为什么是3?他们如何定义效率? 问题答案: 因为语句是使用两个特殊的JVM指令和编译的。在处理很多案例时它们很有用,但是当您只有很少的分支机构时,它们会导致开销。 相反,一条语句被编译为典型的 …链,这些链速度更快,但在长分支链中使用时需要更多的比较。 您可以通过查看字节码来看到差异,无论如何我都不担心这些问题,如果有