�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
import java.util.ArrayList;import java.util.Arrays;import java.util.List;
class TaxBracket { int id; int lowerBound; int upperBound; double rate;
public TaxBracket(int id, int lowerBound, int upperBound, double rate) { this.id
= id; this.lowerBound = lowerBound; this.upperBound = upperBound;
this.rate = rate; }}
class Deduction { String name; int amount;
public Deduction(String name, int amount) { this.name = name; this.amount
= amount; }}
class TaxCalculator { List<TaxBracket> taxBrackets; List<Deduction> deductions; int
income;
public TaxCalculator(int income, List<TaxBracket> taxBrackets, List<Deduction>
deductions) { this.income = income; this.taxBrackets = taxBrackets;
this.deductions = deductions; }
public double calculateTax() { int taxableIncome = income; for (Deduction
deduction : deductions) { taxableIncome -= deduction.amount; }
double tax = 0; for (TaxBracket bracket : taxBrackets) { if
(taxableIncome <= bracket.upperBound) { tax += (taxableIncome -
bracket.lowerBound ) * bracket.rate; break; } else
{ tax += (bracket.upperBound - bracket.lowerBound ) * bracket.rate; } }
return tax; }}
public class Main { public static void main(String[] args) { List<TaxBracket>
taxBrackets = new ArrayList<>(Arrays.asList( new TaxBracket(1, 0, 15000, 0.05),
new TaxBracket(2, 15001, 45000, 0.10), new TaxBracket(3, 45001, 120000, 0.20),
new TaxBracket(4, 120001, 200000, 0.30), new TaxBracket(5, 200001,
Integer.MAX_VALUE, 0.40) ));
List<Deduction> deductions = new ArrayList<>(Arrays.asList( new
Deduction("Standard", 5000), new Deduction("Health_Insurance", 2000),
new Deduction("Retirement_Savings", 3000) ));
int income = 80000; TaxCalculator calculator = new TaxCalculator(income,
taxBrackets, deductions); double tax = calculator.calculateTax();
System.out.println("应纳税额: " + tax); }}
这 个 实现定 义 了 TaxBracket 和 Deduction 类 ,并 创 建了一 个 TaxCalculator 类 来 计 算应
纳 税 额。主 方 法 中 初 始 化了税 率 区 间 和 抵 免额, 并 使 用 这 些 信息计 算 了 一 个 给 定 收入的
应 纳 税额。 注 : 它 似 乎 理解了 这 个 DSL 是 用 来 计 算 税 率的, 类 名 , 方 法 名也比 较 合 理 刘
欣:不 不 不 ,应 该 解 析 一 个 DSL 文 件 ,形 成 TaxBracket 和 Deduction,然后 再 计 算 税 率 ,
你 这 里 少 了 一 个 解 析 器
GPT-4 :抱 歉 , 我明白 你 的 需 求 了 。这 里 是 一 个 使用 Java 编 写 的 解 析 器,用 于 解 析 DSL
文 件 并计算 税 率 : 首 先 ,我们 需 要 创 建 一 个名为 DSLParser 的 类 来 解 析 DSL 文 件 :
�
�
�