Discuss / Java / 练习:工资税收5000及以下免税,5000-10000(含10000)的部分税率为10%,超过10000的部分税率为20%

练习:工资税收5000及以下免税,5000-10000(含10000)的部分税率为10%,超过10000的部分税率为20%

Topic source
public class Main {

	public static void main(String[] args) {
		// TODO: 用接口给一个有工资收入和稿费收入的小伙伴算税:
		Income[] incomes = new Income[] { 
				new SalaryIncome(7500), 
				new RoyaltyIncome(12000) };
		
		// TODO:
		System.out.println(totalTax(incomes));
	}
	
	public static double totalTax(Income...incomes) {
		double total = 0;
		for(Income n : incomes) {
			total += n.getTax();
		}
		return total;
	}

}
/**
 * 定义接口Income
 */
interface Income {

	// TODO
	double getTax();
		
}
/**
 * 工资收入中超过5000不超过10000的部分税率为10%,超过10000的部分税率为20%
 */
public class SalaryIncome implements Income{
	private double salary;
	// TODO
	public SalaryIncome(double salary) {
		this.salary = salary;
	}
	@Override
	public double getTax() {
		if(salary <= 5000) {
			return 0;
		}
		else if(salary >5000 && salary <=10000) {
			return (salary-5000)*0.1;
		}
		else {
			return (salary-10000)*0.2 + 5000*0.1;
		}
	}
}
/**
 * 稿费收入税率是20%
 */
class RoyaltyIncome implements Income{
	private double royalty;
	// TODO
	public RoyaltyIncome(double royalty) {
		this.royalty = royalty;
	}
	@Override
	public double getTax() {
		return royalty*0.2;
	}
}

No.1的专赏

#2 Created at ... [Delete] [Delete and Lock User]

学到了,感谢指点

 错误: 无法将类 SalaryIncome中的构造器 SalaryIncome应用到给定类型;

        Income[] incomes = {new SalaryIncome(12000), new RoyaltyIncome(5000)};

                            ^

  需要: 没有参数

  找到: int

  原因: 实际参数列表和形式参数列表长度不同

接口不能写构造方法,实现的类都写上了构造方法,遇到上面这个错误,怎么解?


  • 1

Reply