-2

您好,我正在为学校做一个项目,我很难弄清楚为什么我的程序一直告诉我我在所有方法中都缺少返回语句,

这是我的代码:

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;
 }
}
4

3 回答 3

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 trueif解决此问题。

于 2013-11-03T20:56:28.967 回答
1
int EthylF = -173;

if (EthylF <= temp)
{System.out.print("Ethyl will freeze at that temperature");}
else 
return false;

此方法仅返回 (false) if EthylF > temp。否则,您有一个打印,但没有返回语句。

非 void 方法内的每个return可能的执行路径都必须以语句或throw语句结束。

于 2013-11-03T20:57:13.287 回答
1

查看isXXXFreezing(int temp)andisXXXBoiling(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的成员变量?如果是这样,写。 引用当前对象,并确保您访问成员变量。Testtemperaturethis.temperature = temperature;thisTest

于 2013-11-03T21:08:30.207 回答