我是 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/