0

私は自分のコード final でいくつかの double を作成しようとしています。「public static final」、「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;

コードの最終行をどこに配置すればよいのか、どのように記述すればよいのかわかりません

4

2 に答える 2

0

一般に、実行時に既知の定数のリストがある場合は、列挙型を作成することをお勧めします。列挙型の列挙型ラベルにデータを関連付けることができます。

これは、定数の配列を静的かつ最終的なものにするパターンよりも優先されます。列挙型はタイプ セーフであり、インスタンス制御されますが、静的な最終定数のタイプ セーフは限られています。

あなたの定数は多少異質です(すべてが同じ基本型を持っているわけではないようです)が、「Withholdings」と呼ばれる列挙型の例を次に示します。

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();

定数のリストよりも列挙型を使用することには多くの利点があります。このようなリストがコンパイル時にわかっている場合、宣言された定数パターンの代わりに列挙型宣言を使用する方が、保守がはるかに簡単で、読みやすく、堅牢であることがわかります。

于 2013-09-18T23:48:48.090 に答える