【发布时间】:2017-08-04 09:26:06
【问题描述】:
我目前正在学习 Java 课程。我们的任务是编写一个程序,在该程序中,总年薪是通过固定年薪、当年销售额的输入以及作为佣金赚取的销售额的百分比来计算的。我的问题是我应该使用哪个变量来获得表中 Total Compensation 列的正确输出。我无法弄清楚如何使用另一列中的数字并利用其他类的逻辑来输出正确的数字。到目前为止,这是我的代码,每个类都是一个单独的 Java 文件:
package sales;
import java.util.Scanner;
public class Sales {
public static void main(String[] args) {
// Initialise scanner
Scanner input = new Scanner(System.in);
System.out.print("Please enter your annual sales:");
// Read sales from input & calculate salary
double annualSales = input.nextDouble();
double salary = Utils.calculateSalary(annualSales);
// Calculate commission bonus
double commissionBonus = 1.5 * annualSales;
// Print information for user
System.out.println("The total yearly salary is: " + Utils.numFormat(salary));
System.out.println("Total Sales \t\t Total Compensation");
while (annualSales <= commissionBonus) {
System.out.println(annualSales + " \t\t " + salary);
annualSales += 5000;
// Update salary according to annual sales
salary = Utils.calculateSalary(annualSales);
}
// Close scanner
input.close();
}
}
package sales;
/**
*
* @author etw11
*/
import java.text.DecimalFormat;
public class Utils {
public final static double FIXED_SALARY = 30000;
/**
* @param dec
* @return
*/
public static String numFormat(double dec) {
return new DecimalFormat("##,##0.00").format(dec);
}
/**
* Calculates the salary based on the given sales.
* @param sales The annual sales
* @return The calculated salary.
*/
public static double calculateSalary(double sales) {
double commissionRate = 0.10d;
if (sales < 320000) {
commissionRate = 0.00d;
} else if (sales >= 320000 && sales < 400000) {
commissionRate = 0.08d;
}
// System.out.println("The current commission is " + (int)(commissionRate * 100) + "% of total sales.");
return FIXED_SALARY + (sales * commissionRate);
}
}
【问题讨论】:
标签: java class methods while-loop