【问题标题】:Returning with if else statements使用 if else 语句返回
【发布时间】:2020-08-20 23:31:09
【问题描述】:

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 是否有目的?我正在回答的问题要求退货,但这似乎是多余的。我该怎么办?编辑:对不起,这个问题也要求打印功能也在其中

【问题讨论】:

    标签: if-statement methods return


    【解决方案1】:

    它是一个计算函数,你应该简单地使用它的结果。

    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 或类似的值。

    【讨论】:

      最近更新 更多