2016-04-14 31 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;  

我的問題是,我的一段時間是不正確的。我不知道那裏有什麼錯。我該如何改變時機才能找到正確的東西?我必須給程序一個參數,它必須使它的根與「蒼鷺進程」也必須有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循環將正常工作。