gpt4 book ai didi

java - BlueJ 中的编译错误- if else with return 语句

转载 作者:行者123 更新时间:2023-11-29 06:51:51 24 4
gpt4 key购买 nike

我正在使用 BlueJ IDE 编写 java 程序。

我有一个返回类型为 String 的方法。我将 return 语句放在 if-else 中,这样如果 boolean 变量“flag”的值为真,则返回一个值,如果值为假,则返回另一个值。

现在,问题是 BlueJ 甚至在此之后要求另一个 return 语句,如下所示。

enter image description here

如果我在 if-else 之后给出另一个 return,它会起作用。

为什么会这样?我了解到 return 语句之后不能有任何语句。那么,为什么编译器要求另一个返回语句?

如果有人想要用于剪切粘贴目的的代码,就在这里。此代码旨在将二进制数转换为十进制数,包括分数,但不包括负数。

public class Conversions{
protected String Binary_Decimal(String str){
int a = str.indexOf('.');
boolean flag = false;
if (a == -1){
str += ".0";
a = str.indexOf('.');
flag = true;
}
String bd = str.substring(0, a);
String ad = str.substring(a + 1);
a = 0;
double num = 0;
for (int i = bd.length() - 1; i >= 0; i--){
num += Math.pow(2, a) * Integer.parseInt(Character.toString(str.charAt(i)));
a++;
}
if (flag == true){
return Integer.toString((int) num);
}
else if (flag == true) {
a = -1;
for (int i = 0; i < ad.length(); i++){
num += Math.pow(2, a) * Integer.parseInt(Character.toString(str.charAt(i)));
a--;
}
return String.valueOf(num);
}
return String.valueOf(num); //<-- WHY DOESN'T IT RUN WITHOUT THIS EXTRA return?
}
}

这里,str是用户使用不同的方法Input()输入的字符串。

最佳答案

问题是您将 if - else 编写为 if - else if。编译器不理解也不关心您拥有的两个条件是相互排斥的,因此涵盖了所有情况。鉴于您编写分支的方式,您需要一个显式的 else 或一个包罗万象的 return 来确保编译器总是返回一个 String .

这是一个例子,说明为什么在您有一组条件时明确拼出 else 是个坏主意。更重要的原因是你的 if 通常会包含更复杂的东西,你可能无法正确地否定它。

关于java - BlueJ 中的编译错误- if else with return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com