2015-01-06 33 views
0

我目前正在爲java(不屬於類的一部分)進行單獨的文本書工作,而且我被困在一個問題上。實例方法:複數

爲這個類編寫一個實例方法模數,可以用類似 的語句調用double size = z.modulus();其中z是複雜類型。如果z表示值a + ib, 那麼調用會將變量大小設置爲| z |的值。 =平方根(a + b )。

我在做什麼錯?

public class complex { 
    double re; 
    double im; 
    complex x; 

    public static void main(String[] args) { 

    public complex z = new complex(); 
    { 
     z.im = In.getDouble(); 
     z.re = In.getDouble();  
    } 
    //public complex modulus = (x); 
    //{ 
    // x.im = z.im * z.im; 
    // x.re = z.re * z.re; 
    // return ; 
    //} 

    public double size() { 
     System.out.println(Math.sqrt(x.im+ x.re)); 
     return Math.sqrt(x.im+ x.re);  
    } 

    double size = z.modulus(); 
    // { 
    //} 

    private double modulus() { 
     // TODO Auto-generated method stub 
     x.im = z.im * z.im; 
     x.re = z.re * z.re; 
     return 0; 
    } 
} 

我所做的更改,並與該出來了,但它仍然無法正常工作,我把錯誤旁邊它們發生的線。

public class complex { 
double re; 
double im; 

public complex z = new complex(); 
{ 
    z.im = In.getDouble(); 
    z.re = In.getDouble();} 
public static void main(String[] args) { 



private double modulus() { // insert enumIdentifier and body, Syntax error on "double" @ expected. 

    return Math.sqrt(im * im + re * re); 
} 

double size = z.modulus(); 


} 

} 
+2

究竟是什麼錯誤?錯誤?例外?錯誤的輸出? – csmckelvey

+0

@Takendarkk異常在線程「main」java.lang.StackOverflowError \t at complex。 (complex.java:30) – Liste1134

+1

@ Liste1134根據你的評論,它看起來像你正在創建'complex'的新實例的'complex'構造函數,這意味着你再次調用'complex'構造函數(它再次創建它自己的另一個'複雜'實例,這意味着它調用構造函數,它創建實例,調用構造函數,...等等)。它看起來是由這個字段引起的'public complex z = new complex();'。 – Pshemo

回答

2

你不需要來指xz。您的班級中有合適的字段可以計算模數。

public double modulus() { 
    return Math.sqrt(im * im + re * re); 
} 

然而,在你的問題的代碼,你似乎是界定main方法內部類的方法。你不能那樣做。在開始下一步之前關閉一種方法的定義(使用})。

+2

您也可以使用['Math.hypot'](http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#hypot-double-double-)。 – ajb

+2

@ajb哦,好點。但我不會改變我的答案,因爲我認爲這樣,OP可能會更好地理解正在發生的事情。 –

+0

@DavidWallace這幫了很多忙,但我仍然有錯誤,所以我用新代碼更新了問題,它是錯誤 – Liste1134