import java.util.Scanner;
public class PracticeQuestionWK4 {
private static double computeDifference(double first, double second) {
if (first <= second) {
System.out.println("First double must be greater than second double, please try again.");
} else {
System.out.println(first - second);
}
return first - second;
}
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.print("Enter first double: ");
double firstDouble = myScanner.nextDouble();
System.out.print("Enter second double: ");
double secondDouble = myScanner.nextDouble();
computeDifference(firstDouble, secondDouble);
}
}
此代码感到尴尬。有没有在这里使用private static double而不是private static void的目的?我正在回答的问题要求回报,但这似乎是多余的。我该怎么办?编辑:对不起,这个问题也要求打印功能也在其中
答案 0 :(得分:0)
这是一种计算功能,您只需使用其结果即可。
double result = computeDifference(firstDouble, secondDouble);
System.out.print("Result: " + result);
在函数内部,通常应该没有输出。 按照惯例,对于真正错误的函数参数,应该抛出一个异常:
private static double computeDifference(double first, double second) {
if (first <= second) {
throw new IllegalArgumentException(
"First double must be greater than second double: "
+ first + " and " + second);
}
return first - second;
}
在这种情况下,可以在呼叫之前 检查参数。
使用此类功能不应使控制台输出混乱的输出。 (这也会减慢计算速度。) 引发异常,中止应用程序,例如除以零, 是 fail-fast 的一种形式。允许开发人员快速查找和修复错误。 这意味着必须首先检查输入。
如果仍然不教授异常(假设您正在学习程序员的课程), 那么只有在错误情况下才执行println,并返回0或类似的值。