使用if / else / if语句从double返回值

时间:2012-01-14 19:01:53

标签: java

public static double Num (JTextField field){
    String s1 = field.getText();
    String n = new String ("N");
    String e = new String ("E");
    String w = new String ("W");
    String s = new String ("S"); 
    if (s1.equalsIgnoreCase(n)){
    return 1;}
    else if (s1.equalsIgnoreCase(e)){
    return 1;}
    else if (s.equalsIgnoreCase(s)){
    return -1;}
    if (s1.equalsIgnoreCase(w)){
    return -1;}
}

嗨,我是Java编程的新手。 好吧,我justed想要从double返回特定值。 我附加了代码的一部分。我选择了double,因为我需要在主类代码的后续部分中使用它的值。

在此之后我收到错误说

  

此方法必须返回double类型的结果。

该程序建议最后添加(又一次)返回。

6 个答案:

答案 0 :(得分:2)

您必须在所有if / else if语句之外添加return语句。编译器提供错误,因为在编译时它发现该程序有可能在if语句都不满意的情况下不返回任何值。

根据你的逻辑,你可能会认为其中一个if语句肯定会被满足,但编译器不知道。所以你应该添加一个假的返回值(比如返回0),这样编译器就不会给出错误。

答案 1 :(得分:1)

1和-1表示整数。它期望返回一个浮点数,而不是一个int。如果您希望返回int,请将“double”更改为“int”:

public static int Num (JTextField field){

或者,如果要返回浮点数,请将“.0”添加到返回值;

return 1.0;
return -1.0;

它告诉你在方法结束时需要另一个return语句的原因是因为必须返回一些东西,并且无法确定你的方法返回了什么。如果您知道其中一个if将始终为true,则可以将最后一个if更改为else:

if (s1.equalsIgnoreCase(n))
  return 1.0;
else if (s1.equalsIgnoreCase(e))
  return 1.0
else if (s.equalsIgnoreCase(s))
  return -1.0;
else
  return -1.0;

如果它们可能同时都是假的,那么你必须在结尾添加另一个回报以确保返回一个值;

if (s1.equalsIgnoreCase(n))
  return 1.0;
else if (s1.equalsIgnoreCase(e))
  return 1.0
else if (s.equalsIgnoreCase(s))
  return -1.0;
else if (s.equalsIgnoreCase(w))
  return -1.0;
return 0.0;

答案 2 :(得分:1)

您需要处理的情况是您指定的字母都不等于字段的文本。在这种情况下,不会调用您的四个return语句,并且Java不知道要返回什么值。解决方案是 - 正如编译器已经建议的那样 - 在方法体的末尾添加return语句,该语句返回默认值。

答案 3 :(得分:0)

我不知道Java,但这些看起来像是问题。

你在许多地方返回一个整数。我认为它应该是一个1.0或类似的Java,让你返回它。此外,如果if / else条件不匹配,则没有返回。这意味着您的函数可能不返回double,这也是一个潜在的错误。这是建议。

答案 4 :(得分:0)

如果在方法签名中声明了返回类型,则总是需要返回该类型的内容。

在您的情况下,如果文本既不是N,E,W或S,那么也不会返回任何内容。 Java不允许这样做。

如果文本应始终是其中一个值,则抛出异常并在调用代码中处理它。否则返回默认值。

您不需要将返回类型声明为double,因为稍后您需要双值。只需返回一个int,它就会被隐式地转换为double。

此外,您不需要为所有内容创建String对象,这只会耗尽您的代码。写吧: if(s1.equalsIgnoreCase(“N”)

答案 5 :(得分:0)

public static double Num (JTextField field){
String s1 = field.getText();
String n = new String ("N");
String e = new String ("E");
String w = new String ("W");
String s = new String ("S"); 
if (s1.equalsIgnoreCase(n)){
return 1;}
else if (s1.equalsIgnoreCase(e)){
return 1;}
else if (s.equalsIgnoreCase(s)){
return -1;}
if (s1.equalsIgnoreCase(w)){
return -1;}
return 0;
}

你需要返回一些价值。如上例所示,您需要至少返回一些值。否则你可以使用void而不是double。