2012-03-19 224 views
-6

我得到我的代碼以下錯誤: -Missing return語句 -Cannto在第二種方法缺少return語句

這裏找到符號是我的代碼:

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"); 

} 
} 
} 
+3

什麼是不清楚的錯誤,告訴你,你沒有return語句。 ..當你沒有回報聲明? – 2012-03-19 15:01:26

+2

你[已經有一個問題打開](http://stackoverflow.com/questions/9771136/method-calling-error)。 – Jesper 2012-03-19 15:02:07

回答

0

你的方法應該返回double並且它裏面沒有return語句。

0

你的convertTemp()函數的返回語句在哪裏?

0

你的方法聲明說你返回一個double,但是你不會返回任何東西。

public static double convertTemp(){ 

只是改變,返回void;

public static void convertTemp(){ 
0

如果你打算在函數中做的是顯示一個消息對話框,它應該是void類型。當您調用convertTemp時,您不會將變量「f」分配給任何內容,例如

double x = convertTemp() 

所以它應該聲明爲void,就像你的主函數一樣。

此外,你如何獲得「temp」到你的convertTemp函數?您需要可以聲明爲類的一部分的功能之外,或者將它傳遞給convertTemp,像這樣:

convertTemp(double temp) 
4

你convertTemp方法具有雙重返回類型。你在JOptionPane上設置值,但你沒有從方法中返回。你有兩種選擇:

1)不要在convertTemp中設置JOptionPane的值。相反,返回值和你的主要方法

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

2)設置的JOptionPane值更改方法返回void:

public static void convertTemp() {} 
0
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 
    } 
    } 
0

你說的方法將返回一個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; 
}