面试题答案
一键面试public class FinancialCalculator {
public static final String ERROR_NEGATIVE_PRINCIPAL = "本金不能为负数";
public static final String ERROR_INVALID_INTEREST_RATE = "利率超出合理范围(应在0到1之间)";
public static String calculateInterestErrorMessage;
public static double calculateInterest(double principal, double interestRate, double time) {
if (principal < 0) {
calculateInterestErrorMessage = ERROR_NEGATIVE_PRINCIPAL;
return Double.NaN;
}
if (interestRate < 0 || interestRate > 1) {
calculateInterestErrorMessage = ERROR_INVALID_INTEREST_RATE;
return Double.NaN;
}
calculateInterestErrorMessage = null;
return principal * interestRate * time;
}
}
你可以这样调用:
public class Main {
public static void main(String[] args) {
double principal = 1000;
double interestRate = 0.05;
double time = 1;
double interest = FinancialCalculator.calculateInterest(principal, interestRate, time);
if (Double.isNaN(interest)) {
System.out.println("计算错误: " + FinancialCalculator.calculateInterestErrorMessage);
} else {
System.out.println("利息: " + interest);
}
}
}
解释
- 常量定义:定义了两个错误信息的常量
ERROR_NEGATIVE_PRINCIPAL
和ERROR_INVALID_INTEREST_RATE
,分别用于本金为负数和利率超出范围的错误提示。 - 静态变量:
calculateInterestErrorMessage
用于存储错误信息,这样调用者可以获取具体的错误。 calculateInterest
方法:- 首先检查本金是否为负数,如果是,设置错误信息并返回
Double.NaN
。 - 接着检查利率是否在合理范围(0到1之间),如果不在,设置错误信息并返回
Double.NaN
。 - 如果没有错误,计算并返回利息值,同时将错误信息设置为
null
。
- 首先检查本金是否为负数,如果是,设置错误信息并返回
- 调用示例:在
main
方法中,调用calculateInterest
方法,如果返回值是NaN
,则打印错误信息,否则打印利息值。
注意事项
- 这里的利率范围假设是0到1(即0%到100%),实际业务中范围可能不同,需要根据实际调整。
- 如果使用其他编程语言,如Python,可以使用异常机制来处理错误,示例如下:
def calculateInterest(principal, interestRate, time):
if principal < 0:
raise ValueError("本金不能为负数")
if interestRate < 0 or interestRate > 1:
raise ValueError("利率超出合理范围(应在0到1之间)")
return principal * interestRate * time
try:
principal = 1000
interestRate = 0.05
time = 1
interest = calculateInterest(principal, interestRate, time)
print("利息:", interest)
except ValueError as e:
print("计算错误:", e)
Python 代码使用try - except
块来捕获和处理在calculateInterest
函数中可能引发的ValueError
异常,并打印相应的错误信息。