import java.util.Scanner;
public class CardenasE_IncomeTax {
public static void main(String[] args) {
String username = "CardenasE";
String realpass = "CarErick12!";
boolean isMarried = true;
boolean isNotMarried = false;
double tax1 = 0;
double tax2 = 0;
double tax3 = 0;
double RATE1 = 0.10;
double RATE2 = 0.12;
double RATE3 = 0.22;
double RATE4 = 0.24;
double RATE5 = 0.32;
double limitSingle1 = 10000;
double limitSingle2 = 40000;
double limitSingle3 = 90000;
double limitSingle4 = 165000;
double limitMarried1 = 20000;
double limitMarried2 = 80000;
double limitMarried3 = 170000;
Scanner input = new Scanner(System.in);
System.out.println("Username: ");
String user = input.nextLine();
System.out.println("Password:");
String pass = input.nextLine();
if (user.equals(username) && pass.equals(realpass)) {
System.out.println("Login Successful!");
} else if (!user.equals(username) || !pass.equals(realpass)) {
System.out.println("Invalid Credentials!");
return;
}
System.out.printf("%n What is your gross income?: ");
double grossIncome = input.nextInt();
System.out.println("Are you married?: (Type 's' for single and 'm' for married.) ");
String maritalStatus = input.next();
if (maritalStatus.equals("s")) {
if (grossIncome <=limitSingle1)
tax1 = grossIncome * RATE1;
System.out.println("Your income is: " + tax1);
return;
} else if (grossIncome > limitSingle1 && grossIncome <= limitSingle2){
tax2 = grossIncome * RATE2;
System.out.println("Your income is: " + tax2);
}
}
}当使用第一个限制(从0到10,000为10% )的括号时,它给出了正确的解,但我有另一个if语句,它大于10,000,但小于或等于40,000,它的设置为第一个if语句,但它给出了0作为答案,不管我加了多少个数字。
发布于 2022-09-04 07:27:02
尝试将总收入中的else if块移到语句if (grossIncome <=limitSingle1)中嵌套的if中。如下所示:
if (maritalStatus.equals("s")) {
if (grossIncome <=limitSingle1) {
tax1 = grossIncome * RATE1;
System.out.println("Your income is: " + tax1);
} else if (grossIncome > limitSingle1 && grossIncome <= limitSingle2) {
tax2 = grossIncome * RATE2;
System.out.println("Your income is: " + tax2);
}
return;我们可以通过删除tax1、tax2和tax3变量进一步改进您的代码,并且只有tax变量。这是为了减少重复打印出局。
if (maritalStatus.equals("s")) {
if (grossIncome <=limitSingle1) {
tax = grossIncome * RATE1;
} else if (grossIncome > limitSingle1 && grossIncome <= limitSingle2) {
tax = grossIncome * RATE2;
}
System.out.println("Your income is: " + tax);
return;作为最佳实践,如果你的价值观是不应该改变的。您应该添加final关键字以避免修改。
double final RATE1 = 0.10;
此外,您可以通过在Constants.java文件中移动常量来改进这一点。您也可以将其实现为HashMap来进行查找。
https://stackoverflow.com/questions/73597164
复制相似问题