java - 在方法重载中返回

标签 java methods return overloading

我是 Java 新手,正在自学。我在尝试方法重载时遇到了麻烦。这是代码

 public static void main(String[] args) {
        calculateScore();
        calculateScore(500);
        calculateScore("Duy", 600);
        calcFeetAndInchesToCentimetres(100, 3.5);
        calcFeetAndInchesToCentimetres(100*12 + 3.5);
    }

 public static double calcFeetAndInchesToCentimetres(double feet, double inches) {
        if (feet >= 0 && inches >= 0 && inches <= 12) {
            double footToInches = feet * 12;
            double centimetres = (inches + footToInches) * 2.54;
            System.out.println("The value in centimetres is " + centimetres + " cm.");
            return centimetres;
        } else {
            return -1;
        }
    }

    public static double calcFeetAndInchesToCentimetres(double inches) {
        if (inches >= 0){
            double inchesToFeet = inches / 12;
            double inchesRemain = inches - (inchesToFeet * 12);
            calcFeetAndInchesToCentimetres(inchesToFeet, inchesRemain);
            return 0;
        } else {
            return -1;
        }

我的问题是,当我从第二种方法中获取 return 0 时,调试器显示“缺少返回语句”。然后我尝试输入 return calcFeetAndInchesToCentimetres(inches);,它有效但程序运行了大约数千次。

然后我输入return 0,一切正常。但我不明白为什么我不能放 return calcFeetAndInchesToCentimetres(inches); 以及为什么当上面的方法(有 2 个参数)已经有了它时我需要一个 return 语句。如果我想在执行第二种方法(仅使用“inches”参数)时转换厘米值,我需要做什么?

还有一件事我在这个 block 代码中意识到

double inchesToFeet = inches / 12;
        double inchesRemain = inches - (inchesToFeet * 12);
        calcFeetAndInchesToCentimetres(inchesToFeet, inchesRemain);

inchesRemain 将为 0?但是这个方法非常有效。当我更改 inchesToFeet = inches % 12 时,它只是不显示任何内容。为什么?

最佳答案

它应该只是:

public static double calcFeetAndInchesToCentimetres(double inches) {
    if (inches >= 0){
        double inchesToFeet = inches / 12;
        double inchesRemain = inches - (inchesToFeet * 12);
        return calcFeetAndInchesToCentimetres(inchesToFeet, inchesRemain);
    } else {
        return -1;
    }
}

您说您已经尝试过 return calcFeetAndInchesToCentimetres(inches); 但那只是递归调用您的方法,并且它会永远递归,因为没有停止条件。

关于java - 在方法重载中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283922/

相关文章:

java - Java中将某些方法放入Main方法中

python - 如何返回不带引号的字符串 Python 3

java - java编译时变量初始化错误

java - firestore -- 在 hashmap 的字段中添加元素

java - 如何将文件附加器与 jar 文件一起使用?

Java——如何使用 args[] 调用方法?

c++ - 返回静态变量的成员函数

java - 如何在 Jspinner 中制作时间格式?

javascript - 当循环内的 if 子句中断时,在函数中返回 false

java - 将返回值添加到 arrayList Java