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类型的结果。
该程序建议最后添加(又一次)返回。
答案 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。