2016-04-14 9 views
-7
public static BigDecimal bessereZieheWurzel(int zahl){ 
    BigDecimal bessereZahl = new BigDecimal(zahl); 
    BigDecimal x = new BigDecimal(zahl); 
    BigDecimal zwei = new BigDecimal(2); 
    BigDecimal endErg = bessereZahl; 
    BigDecimal zwischenErg = new BigDecimal(0); 
    BigDecimal epsilon = new BigDecimal(0.000000000000000000000000000001); 
    int anzahlSchritte = 1; 
    BigDecimal variable = new BigDecimal(zahl); 

    zwischenErg = bessereZahl.divide(x,30, RoundingMode.DOWN).add(x); 

    zwischenErg = zwischenErg.divide(zwei,30, RoundingMode.DOWN); 
    BigDecimal letzterDurchlauf = zwischenErg; 
    x=zwischenErg; 



    while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1); 

    endErg = variable.divide(x,30, RoundingMode.DOWN).add(x); 

    endErg = endErg.divide(zwei,30, RoundingMode.DOWN); 


    anzahlSchritte ++; 



     return endErg;  

私の問題は私の間違いです。私は何が間違っているのか分からない。正しいことを得るためにはどうすれば変更できますか?私はプログラムに引数を与えなければなりません。また、 "heron process"のルートを作る必要があります。小数点以下は30小数でなければなりません。

+0

あなたの 'while'は空です。 'while'はブロック' {} 'をとります。あなたはただ一つの空のステートメント'; 'を与えただけです。 –

答えて

0
while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1); 

このコード行では何が起こっていますか?
答えは何もありません。何もない。

while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1) 
{ 
    //Stuff you want to run goes in here 
} 

今すぐあなたのwhileループが正常に動作します:これがそうのようにそれを実行して修正するには