【问题标题】:Missing return statement [closed]缺少退货声明[关闭]
【发布时间】:2012-03-19 14:59:33
【问题描述】:

我的代码中出现以下错误: - 缺少退货声明 -第二种方法找不到符号

这是我的代码:

import java.io.*;
import javax.swing.JOptionPane;

public class Converter {
    public static void main(String[] args) throws Exception{
        //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String unit = JOptionPane.showInputDialog("Enter unit F or C: ");

        String temp1 = JOptionPane.showInputDialog("Enter the Temperature: ");


        double temp = Double.valueOf(temp1).doubleValue();
    }




        public static double convertTemp(){
         if((unit.equals("F"))||(unit.equals("f"))){
        double c= (temp - 32) / 1.8;
        JOptionPane.showMessageDialog(null,c+" Celsius"));
        }

         else if((unit.equals("C"))||(unit.equals("c"))){
        double f=((9.0 / 5.0) * temp) + 32.0;
        JOptionPane.showMessageDialog(null,f+" Fahrenheit");

}
}
}

【问题讨论】:

标签: java


【解决方案1】:

您的 convertTemp 方法的返回类型为 double。您在 JOptionPane 上设置值,但您没有从方法中返回它。您有两种选择:

1) 不要在 convertTemp 内部的 JOptionPane 上设置值。而是返回值并在 main 方法中设置 JOptionPane 值

public static double convertTemp() {
    double c = 0.0;
    /* do stuff */
    return c;
}

2) 改变方法返回void:

public static void convertTemp() {}

【讨论】:

    【解决方案2】:

    convertTemp() 函数的返回语句在哪里?

    【讨论】:

      【解决方案3】:

      你的方法声明说你返回一个双精度,但你没有返回任何东西。

      public static double convertTemp(){
      

      只需将其更改为返回 void;

      public static void convertTemp(){
      

      【讨论】:

        【解决方案4】:
            public static double convertTemp(){
             if((unit.equals("F"))||(unit.equals("f"))){
                 double c= (temp - 32) / 1.8;
                 JOptionPane.showMessageDialog(null,c+" Celsius"));
                 return c;   //add this
             }
        
             else if((unit.equals("C"))||(unit.equals("c"))){
                double f=((9.0 / 5.0) * temp) + 32.0;
                JOptionPane.showMessageDialog(null,f+" Fahrenheit");
                return f;    //add this
             }
            }
        

        【讨论】:

          【解决方案5】:

          您声明该方法将返回 double,这就是需要 return 语句的原因。将返回类型更改为void(如果您不需要返回值)或添加如下语句:

          public static double convertTemp(){
          
            if((unit.equals("F"))||(unit.equals("f"))){
              double c= (temp - 32) / 1.8;
              JOptionPane.showMessageDialog(null,c+" Celsius"));
          
              //return c here
              return c;
            }
          
            else if((unit.equals("C"))||(unit.equals("c"))){
              double f=((9.0 / 5.0) * temp) + 32.0;
              JOptionPane.showMessageDialog(null,f+" Fahrenheit");
          
              //
              return f;
            }
          
            // return 0 - or something else - when neither f nor c where selected
            return 0.0;
          }
          

          【讨论】:

            【解决方案6】:

            如果您在函数中要做的只是显示一个消息对话框,那么它应该是 void 类型。调用 convertTemp 时,不要将变量“f”分配给任何东西,例如

            double x = convertTemp()
            

            所以它应该被声明为 void,就像你的 main 函数一样。

            另外,您如何将“temp”添加到您的 convertTemp 函数?您需要将其声明为函数之外的类的一部分,或者将其传递给 convertTemp,如下所示:

            convertTemp(double temp)
            

            【讨论】:

              【解决方案7】:

              你的方法应该返回double,并且里面没有return语句。

              【讨论】:

                猜你喜欢
                • 2012-10-04
                • 2013-07-11
                • 2016-06-23
                • 2011-03-30
                • 1970-01-01
                • 2020-09-15
                • 1970-01-01
                • 1970-01-01
                • 2012-03-23
                相关资源
                最近更新 更多