[英]How can I put an if statement inside of a if-else if statement
我正在尝试制作一个工资计算器,如果申请人未满 18 岁,他们就不能加班,因为在我所在的州,未成年人的最长允许时间为 18 小时。 我已经设置了在达到 40 小时之前您无法获得加班费的设置。 我能为此做些什么吗?
import java.util.Scanner;
public class SalaryV2
{
public static void main(String[] args)
{
//Declare and initialize variables
double totalSalary;
boolean isOvertime;
Scanner in = new Scanner(System.in);
//Input
System.out.print("Please enter your name (first last): ");
String firstName = in.next();
String lastName = in.nextLine();
System.out.print("Please enter your age: ");
String customerAge = in.nextLine();
double age = Double.parseDouble(customerAge);
System.out.print("\nWhat is your hourly rate of pay: ");
String rateOfPay = in.nextLine();
double payRate = Double.parseDouble(rateOfPay);
System.out.print("\nHow many hours did you work: ");
String totalHoursWorked = in.nextLine();
double totalHours = Double.parseDouble(totalHoursWorked);
System.out.println();
//Processing
if(17 > age)
{
isOvertime = false;
totalSalary = totalHours * payRate;
}
else if(totalHours > 40)
{
if(totalHours > 40)
{
isOvertime = true;
totalSalary = 40 * payRate + (totalHours - 40) * payRate * 1.5;
}
else
{
isOvertime = false;
totalSalary = totalHours * payRate;
}
}
//Output
System.out.print("Employee Name: " + lastName + ", " + firstName\n);
System.out.print("Hours worked: " + totalHours);
System.out.println("\t\tOvertime: " + isOvertime +);
System.out.println("Salary: " + totalSalary);
} }
保持简单,不需要 else-if-if,
import java.util.Scanner;
public class SalaryV2{
public static void main(String[] args){
//Declare and initialize variables
double totalSalary= 0;
boolean isOvertime = false;
Scanner in = new Scanner(System.in);
//Input
System.out.print("Please enter your name (first last): ");
String firstName = in.next();
String lastName = in.nextLine();
System.out.print("Please enter your age: ");
String customerAge = in.nextLine();
double age = Double.parseDouble(customerAge);
System.out.print("\nWhat is your hourly rate of pay: ");
String rateOfPay = in.nextLine();
double payRate = Double.parseDouble(rateOfPay);
System.out.print("\nHow many hours did you work: ");
String totalHoursWorked = in.nextLine();
double totalHours = Double.parseDouble(totalHoursWorked);
System.out.println();
//Processing
if(age >= 18 && totalHours > 40) {
isOvertime = true;
totalSalary = 40 * payRate + (totalHours - 40) * payRate * 1.5;
}else{
isOvertime = false;
totalSalary = totalHours * payRate;
}
//Output
System.out.print("Employee Name: " + lastName + ", " + firstName +'\n' );
System.out.print("Hours worked: " + totalHours + '\n');
System.out.println("Overtime: " + isOvertime );
System.out.println("Salary: " + totalSalary);
}}
使用以下输入 STDIN firstname lastname 19 10 42
输出 :
$javac SalaryV2.java
$java -Xmx128M -Xms16M SalaryV2
Please enter your name (first last): Please enter your age:
What is your hourly rate of pay:
How many hours did you work:
Employee Name: lastname, firstname
Hours worked: 42.0
Overtime: true
Salary: 430.0
如果未满 18 岁标准输入
名字 姓氏 17 10 42
输出 :
$javac SalaryV2.java
$java -Xmx128M -Xms16M SalaryV2
Please enter your name (first last): Please enter your age:
What is your hourly rate of pay:
How many hours did you work:
Employee Name: lastname, firstname
Hours worked: 42.0
Overtime: false
Salary: 420.0
通过执行上面的代码进行检查。
我不太明白你的问题,但这里有一些你可以改进的地方。
在第一个 if 中,您甚至不考虑 17 岁,您应该输入if(17 >= age)
或if(18 > age)
。
然后,在 else 中,如果您将条件与下面的 if 相同,那么您应该做的是:
else if(totalHours > 40)
{
isOvertime = true;
totalSalary = 40 * payRate + (totalHours - 40) * payRate * 1.5;
}
else
{
isOvertime = false;
totalSalary = totalHours * payRate;
}
为了使您的代码更高效,您可以将两个条件放在一个 if 中。
if(18 > age && totalHours > 40)
{
isOvertime = false;
totalSalary = totalHours * payRate;
}
else
{
isOvertime = true;
totalSalary = 40 * payRate + (totalHours - 40) * payRate * 1.5;
}
我没有检查代码是否真的有效,但应该没问题
如果你是未成年人,你不能加班(这看起来很奇怪)。
如果你的时间少于 40 小时,你就不能加班(每个人都知道这样做的奇怪后果......)。
因此,只有年满 18 周岁且工作时间超过 40 小时才能获得加班费。
if((18 <= age) && (totalHours > 40))
{
isOvertime = false;
totalSalary = totalHours * payRate;
} else
{
isOvertime = true;
totalSalary = 40 * payRate + (totalHours - 40) * payRate * 1.5;
}
即我不认为需要嵌套if
s。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.