我试图在我的代码最终中制作一些双打。我尝试过一些方法,比如“public static final”,“just final”等等。
import java.util.Scanner;
import java.text.DecimalFormat;
public class Pay_stub {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("#.00");
double fedinctax = .15;
double statetax = .035;
double socsectax = .0575;
double meditax = .0275;
double penplan = .05;
double healthins = 75;
double hoursworked;
double hourlyrate;
double netpay;
double grosspay;
String firstname, lastname;
System.out.println("Enter employee first name: ");
firstname = input.next();
System.out.println("Enter employee last name: ");
lastname = input.next();
System.out.println("Enter hours worked: ");
hoursworked = input.nextDouble();
System.out.println("Enter hourly rate: ");
hourlyrate = input.nextDouble();
grosspay = hoursworked * hourlyrate;
double fit = grosspay * fedinctax;
double st = grosspay * statetax;
double sst = grosspay * socsectax;
double mmt = grosspay * meditax;
double pp = grosspay * penplan;
double total = fit + st + sst + mmt + pp + healthins;
double net = grosspay - total;
System.out.println(firstname + lastname + "'s monthly paycheck is: ");
System.out.println("Gross Pay: " + (df.format(grosspay)));
System.out.println("Federal Income Tax: " + fit);
System.out.println("State Tax: " + st);
System.out.println("Social Security Tax: " + sst);
System.out.println("Medicare/Medicaid Tax: " + mmt);
System.out.println("Pension Plan: " + pp);
System.out.println("Health Insurance: " + healthins);
System.out.println("Net Pay: " + (df.format(net)));
}
}
这些是我想做的最终决定:
double fedinctax = .15;
double statetax = .035;
double socsectax = .0575;
double meditax = .0275;
double penplan = .05;
double healthins = 75;
我只是不确定我应该在代码中放置最后一行,或者它们应该如何编写
答案 0 :(得分:2)
final double fedinctax = .15;
顺便说一句,而不是使用
final double fedinctax = .15;
final double statetax = .035;
final double socsectax = .0575;
...
你可以做到
final double fedinctax = .15,
statetax = .035,
socsectax = .0575,
...
或(缩进无关紧要)
final double fedinctax = .15, statetax = .035, socsectax = .0575, ...
所以你不必一遍又一遍地重新输入“final double
”。 (同样适用于普通double
,或任何其他类型的事情)
此外,最终字段的命名约定为ALL_CAPS
,例如:final double STATE_TAX
答案 1 :(得分:0)
通常,如果您有一个在运行时已知的常量列表,那么首选的方法是创建一个枚举。您可以将数据与枚举中的枚举关联起来。
这比使常量数组静态和最终的模式更受欢迎。枚举是类型安全和实例控制的,而静态最终常量只有有限的类型安全。
你的常量有些异质(它们似乎并非都具有相同的基类型),但这里有一个名为“隐瞒”的枚举的例子:
enum Withholding {
FEDERAL_INCOME (0.15),
STATE_INCOME (0.035),
SOCIAL_SECURITY (0.0575),
MEDICARE (0.0275),
PERSONAL_RETIREMENT (0.05);
private final double rate;
Withholding (double r) {
this.rate = r;
}
getRate() { return this.rate; }
}
例如,要获取税前收入的预扣税率,您可以在代码中使用以下内容:
double fed_withholding = gross_salary * Withholding.FEDERAL_INCOME.getRate();
在常量列表上使用枚举有许多优点。当您在编译时知道这样的列表时,您会发现使用枚举声明而不是声明的常量模式更容易维护,更易读,更健壮。