2016-10-17 12 views
2

これは私の頭の上にある宿題のためのものです。私の先生はクラスをとても素早く動かしています。これは私が今までにJavaで書いた4番目のプログラムです。私はいくつかの助言を求めています。私は自分のプログラムで定義されているEPSILONのエラーに数値のおおよそのsqrtを見つける必要があります。しかし、これはスクイズ定理を使用して達成され、常に私の境界を更新する必要があります。 Javaでは変数全体の使用時に変数の値をどのように更新するのですか?私の教授はまだ値を返さないということを覚えておいてください。私は彼が私たちにそれらを使うつもりはないと思います。私はかなり初心者ですが、私は心が開いています。あなたは中間点の変数を更新するたびにmidPointSqr変数を更新する必要がスクイーズ定理を使ったjavaの平方根の近似

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    final double EPSILON = .0000000001; 


    System.out.print("Enter a number to find its square root -> "); 
    double number = sc.nextDouble(); 
    double low = 0; 
    double high = 0; 
    double midPoint = (low+high)/2; 
    high = number; 
    double midPointSqr = midPoint*midPoint; 
    if (number < 0) { 
     System.out.println("NaN"); 
    } else { 
     while ((Math.abs(midPointSqr - number)) > EPSILON) { 


      { 
       if (number <= 1) { 
        low = 0; 

        if (midPointSqr > number) 
        { 
         midPoint = (high+low)/2; 
         high = high/2; 
        System.out.printf("%.6f, %.6f\n", low, high); 
        } 
        else 
        { 
         midPoint = (high+low)/2; 
         low = high/2; 
         System.out.printf("%.6f, %.6f\n", low, high); 
        } 


       } else { 
        low = 1; 

        if (midPointSqr > number) 
        { 
         midPoint = (high+low)/2; 
         high = high/2; 
        System.out.printf("%.6f, %.6f\n", low, high); 
        } 
        else 
        { 
         midPoint = (high+low)/2; 
         low = high/2; 
         System.out.printf("%.6f, %.6f\n", low, high); 
        } 

       } 
      } 
     } 
    } 

} 

}

答えて

0

。あなたは

midPoint = <something>; 

のような代入文を持ってどこですから、このように、その後、あなたの正方形の権利をrecopute必要があります。

midPointSqr = midPoint * midPoint 

別alternarive代わりmidPointSqr変数を使用してのどこでも機能を使用することです。

getSqr(midPoint) 
:あなたはmidPointSqr変数を使用しているwhereever

double getSqr(double value){ 
    return value* value; 
} 

ので、次の方法のコードに置き換え