📄 ex6_14.java
字号:
//6.14 税款类Tax
import javax.swing.JOptionPane;
public class Ex6_14{
public static void main (String[] args) {
int[][] brackets1 = {
{27050, 65550, 136750, 297350},
{45200, 109250, 166500, 297350},
{22600, 54625, 83250, 148675},
{36250, 93650, 151650, 297350}
};
int[][] brackets2 = {
{6000, 27950, 67700, 141250, 307050},
{12000 , 46700, 112850, 171950, 307050},
{6000, 23350, 56425, 85975, 153525},
{10000, 37450, 96700, 156600, 307050}
};
double[] rates1 = {0.15, 0.275, 0.305, 0.355, 0.391};
double[] rates2 = {0.1, 0.15, 0.27, 0.30, 0.35, 0.386};
Tax tax1=new Tax(0,brackets1,rates1,5000);
System.out.println("2001 年税款表");
System.out.println("Income"+"\t"+"tax_single"+"\t"+"tax_m_j"+"\t"+"tax_m_s"+"\t"+"tax_h");
for(int taxableIncome=50000;taxableIncome<=60000;taxableIncome+=1000){
tax1.setTaxableIncome(taxableIncome);
tax1.setFilingStatus(0);
double tax_single=tax1.findTax();
tax1.setFilingStatus(1);
double tax_married_jointly=tax1.findTax();
tax1.setFilingStatus(2);
double tax_married_separately=tax1.findTax();
tax1.setFilingStatus(3);
double tax_household=tax1.findTax();
System.out.println(taxableIncome+"\t"+tax_single+"\t"+tax_married_jointly+"\t"+tax_married_separately+"\t"+tax_household);
}
Tax tax2=new Tax(0,brackets2,rates2,5000);
System.out.println("2002 年税款表");
System.out.println("Income"+"\t"+"tax_single"+"\t"+"tax_m_j"+"\t"+"tax_m_s"+"\t"+"tax_h");
for(int taxableIncome=50000;taxableIncome<=60000;taxableIncome+=1000){
tax2.setTaxableIncome(taxableIncome);
tax2.setFilingStatus(0);
double tax_single=tax2.findTax();
tax2.setFilingStatus(1);
double tax_married_jointly=tax2.findTax();
tax2.setFilingStatus(2);
double tax_married_separately=tax2.findTax();
tax2.setFilingStatus(3);
double tax_household=tax2.findTax();
System.out.println(taxableIncome+"\t"+tax_single+"\t"+tax_married_jointly+"\t"+tax_married_separately+"\t"+tax_household);
}
}
}
class Tax{ //Tax类
public final static int SINGLE_FILER=0;
public final static int MARRIED_JOINTLY=1;
public final static int MARRIED_SEPERATELY=2;
public final static int HEAD_OF_HOUSEHOLD=3;
private int filingStatus;
private int[][] brackets={ //2001年的纳税等级
{27050, 65550, 136750, 297350}, // SINGLE_FILER
{45200, 109250, 166500, 297350}, // MARRIED_JOINTLY
{22600, 54625, 83250, 148675}, // MARRIED_SEPERATELY
{36250, 93650, 151650, 297350} // HEAD_OF_HOUSEHOLD
};
private double[] rates={0.15,0.275,0.305,0.355,0.391}; //2001年的税率
private double taxableIncome;
Tax(){ filingStatus=SINGLE_FILER;
taxableIncome=0;
}
public Tax(int filingStatus,int[][] brackets,double[] rates,double taxableIncome){
this.filingStatus=filingStatus;
this.brackets=brackets;
this.rates=rates;
this.taxableIncome=taxableIncome;
}
public int getFilingStatus() {
return filingStatus;
}
public void setFilingStatus(int filingStatus) {
this.filingStatus = filingStatus;
}
public void setBrackets(int[][] brackets) {
this.brackets = brackets;
}
public void setRates(double[] rates) {
this.rates = rates;
}
public double getTaxableIncome() {
return taxableIncome;
}
public void setTaxableIncome(double taxableIncome) {
this.taxableIncome = taxableIncome;
}
public double findTax(){
double tax=0;
int i=0;
if(taxableIncome<=brackets[filingStatus][0])
return rates[0]*taxableIncome;
else
tax=brackets[filingStatus][0]*rates[0];
for(i=1;i<brackets[0].length;i++){//计算每一等级的税款
if(taxableIncome<=brackets[filingStatus][i])
return tax+=rates[i]*(taxableIncome-brackets[filingStatus][i-1]);
else
tax+=rates[i]*(brackets[filingStatus][i]-brackets[filingStatus][i-1]);
}
if (i==brackets[filingStatus].length && taxableIncome > brackets[filingStatus][i - 1])
tax+=(taxableIncome - brackets[filingStatus][i - 1]) * rates[i];
return tax;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -