2016-04-14 24 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循环将正常工作。