您好我正在为一所学校的项目工作,我很难解释为什么我的程序一直告诉我在我的所有方法中都缺少一个返回语句,
这是我的代码:
public class Temperature {
private int temperature;
//constructors
public int Test( int temperature )
{
temperature = temperature;
return temperature;
}
public int TempClass()
{
temperature = 0;
return 0;
}
// get and set methods
public int getTemp()
{
return temperature;
}
public void setTemp(int temp)
{
temperature = temp;
}
//methods to determine if the substances
// will freeze or boil
public static boolean isEthylFreezing(int temp)
{
int EthylF = -173;
if (EthylF <= temp)
{System.out.print("Ethyl will freeze at that temperature");}
else
return false;
}
public boolean isEthylBoiling(int temp)
{
int EthylB = 172;
if (EthylB >= temp)
System.out.print("Ethyl will boil at that temperature");
else
return false;
}
public boolean isOxygenFreezing(int temp)
{
int OxyF = -362;
if (OxyF <= temp)
System.out.print("Oxygen will freeze at that temperature");
else
return false;
}
public boolean isOxygenBoiling(int temp)
{
int OxyB = -306;
if (OxyB >= temp)
System.out.print("Oxygen will boil at that temperature");
else
return false;
}
public boolean isWaterFreezing(int temp)
{
int H2OF = 32;
if (H2OF <= temp)
System.out.print("Water will freeze at that temperature");
else
return false;
}
public boolean isWaterBoiling(int temp)
{
int H2OB = 212;
if (H2OB >= temp)
System.out.print("Water will boil at that temperature");
else
return false;
}
}
答案 0 :(得分:4)
以下是问题专栏:
if (EthylF <= temp)
{System.out.print("Ethyl will freeze at that temperature");}
else
return false;
编译器认为return false
属于else
分支,因此如果采用EthylF <= temp
分支,则方法结束而不返回值。其他boolean
吸气剂也是如此。
正确缩进和使用花括号可以帮助您避免这样的问题:当您看到格式如下的相同代码时
if (EthylF <= temp) {
System.out.print("Ethyl will freeze at that temperature");
} else {
return false;
}
你确切地知道问题所在。
在return true
分支中添加if
可以解决此问题。
答案 1 :(得分:1)
int EthylF = -173;
if (EthylF <= temp)
{System.out.print("Ethyl will freeze at that temperature");}
else
return false;
此方法仅在EthylF > temp
时返回(false)。否则,您有一个打印,但没有返回声明。
非void方法中每个可能的执行路径必须以return
语句或throw
语句结束。
答案 2 :(得分:1)
查看isXXXFreezing(int temp)
和isXXXBoiling(int temp)
方法中的if-else语句:if语句下面的部分不包含return语句,只包含else下面的部分。
isEthylFreezing(int temp)
的正确代码是
public static boolean isEthylFreezing(int temp) {
int EthylF = -173;
if (EthylF <= temp)
{
System.out.print("Ethyl will freeze at that temperature");
return true;
}
else
return false;
}
同样在Test
的构造函数中,您将变量temperature
赋给自身。我想你想要将函数参数temperature
分配给Test
的成员变量,该变量也被命名为temperature
?如果是,请写this.temperature = temperature;
。
this
引用当前的Test
对象,并确保您访问成员变量。