2011-03-02 12 views
1
import javax.swing.JOptionPane; 

public class Mate { 

double suma (double x1,double x2) 
    {return x1+x2;} 

double suma (double x1,double x2,double x3) 
    {return x1+x2+x3;} 

double suma (int num [ ]) 

    {int i=num.length; 
    int j=0; 
    int s=0; 

for(j=0;j < i;j++) 

{return (double)(s);}}} // here appears the error "missing return statement" 

class AplicacionMate 

{public static void main (String arg []) 

    {int n[ ]={5,4,3,2,1}; 
    double r=0.0; 
    Mate m=new Mate (); 
    r=m.suma(5,4); 
    JOptionPane.showMessageDialog(null,"La suma 1="+r); 
    r=m.suma(5,5,4); 
    JOptionPane.showMessageDialog(null,"La suma 2="+r); 
    r=m.suma(n); 
    JOptionPane.showMessageDialog(null,"La suma del arreglo="+r); 
    System.exit(0);}} 
+0

你永遠不分配一個值's'以外'0',所以你可以替換整個'SUMA(INT [ ])''方法返回0;',但這可能不是你想要的。 – 2011-03-02 07:27:02

+1

我懷疑你理解錯誤的部分原因是代碼格式很糟糕 - 尤其是縮進和換行符。修復它,你將有更好的機會發現錯誤。 – 2011-03-02 07:33:11

回答

3

我把格式化你的代碼的自由。這是該方法的樣子:

double suma (int num [ ]) { 
    int i=num.length; 
    int j=0; 
    int s=0; 

    for(j=0;j < i;j++) { 
     return (double)(s); 
    } 
} 

我懷疑你試圖寫一個總和法,開始與存根,並沒有得到它來編譯。這可能是你腦子裏想的是什麼:

double suma (int num [ ]) { 
    int i=num.length; 
    int j=0; 
    int s=0; 

    for(j=0;j < i;j++) { 
     // here you probably want s += num[j]; 
    } 

    return (double)(s); 

} 

Java編譯器只能推斷出一個聲明(如return)是非常簡單的情況下到達。 (舉例說明:這種方法確實編譯還沒非常有用的,雖然!)

double suma (int num [ ]) { 
    int i=num.length; 
    int j=0; 
    int s=0; 

    for(j=0; true; j++) { 
     return (double)(s); 
    } 
} 
+0

感謝您採取自由,它完美的作品:) – danielit0w 2011-03-02 09:51:06

1
for(j=0;j < i;j++) 

{return (double)(s);}}} // here appears the error "missing return statement" 

有可能的情況下,當它不進入循環,所以它不會返回任何東西。

你需要確保它應該返回所有的情況下