2016-12-15 3 views
3

私はJavaを学ぼうとしています。ここで私は苦労しています運動は次のとおりです。コーディングの難しさ(フェルマーの最後の定理)

フェルマーの最終定理は、a、b、cのように何の整数が存在しないことを言っている場合を除く^ N + B^N = C^Nときのn = 2.

checkFermatという名前のメソッドを作成します。これは4つの整数をパラメータとして取ります.a、b、c、nはFermatの定理が成立するかどうかを確認します。 nが2より大きく、a^n + b^n = c^nであることが真であることが判明した場合、プログラムは「聖なる煙霧、Fermatは間違っています」と表示しなければならない。そうでなければ、プログラムは "No、that doesn '

raiseToPowという名前のメソッドがあり、2つの整数を引数としてとり、最初の引数を2番目の引数の累乗にすると仮定する必要があります。例えば:私はいくつかの問題が発生した

2^3 = 8ので int x = raiseToPow(2, 3); は、xに値8を割り当てます、例えば私はAのみで、 intMath.Pow(a, n)を使用するように見えることはできません double。あなたが興味を持っているなら、ここまで私がこれまで持っていたことは、それをスキップして、ちょうどあなた自身のバージョンのプログラムを回答に書いてください。

(私はほんの数日戻ってこの本を開始しますのでご注意ください。)主な問題は、私は運動が尋ねる質問に答える方法を正確に確認していない、とプログラムが記載されているということです

package fermat.s_last_theorem; 
    import java.lang.Math; 
    import java.util.Scanner; 

    public class FermatS_Last_Theorem { 


    public static void main(String[] args) { 

    Scanner s = new Scanner (System.in); 
    System.out.println("Inster First Number"); 
    double frst = s.nextDouble(); 
    System.out.println("Insert Second Number"); 
    double scnd = s.nextDouble(); 

    System.out.println("Insert Exponent"); 
    double expo = s.nextDouble(); 


    double v = FLaw(frst,scnd,expo); 
    double k = FLawRes(v, expo); 

    System.out.println("The answer is " + v); 
    System.out.println("Your answer rooted by your exponent is " + k); 
    Law(v, Pow(k, expo)); 


    } 

    public static double Pow(double a, double b) { 
    double res = Math.pow (a, b); 
    return (res); 
    } 

    public static double FLaw(double frst, double scnd, double expo) { 
    double D1 = Pow(frst, expo); 
    double D2 = Pow(scnd, expo); 


    return (D1 + D2); 

    } 

    public static double FLawRes(double res, double base) { 

    double D3 = Pow(res, 1/base); 
    return D3; 
     } 

    public static void Law(double v, double k) { 
     if (v==k) { 
    System.out.println("Pythagora works."); 
     } else { 
    System.out.println("Pythagora doesnt work"); 
    } 
    } 
} 

上記のように動作しません。意味

+0

'(int)Math.Pow(a、n)'を使用すると、返された値を整数に戻すことができます。 (もちろん、整数の有効範囲を超えていないと仮定します) – AJNeufeld

+0

"タイプキャスト"という概念を探しています。 – Victory

+0

Javaプリミティブ型変換、型キャスト、 の精度を読むことができます。 –

答えて

3

あなたはraiseToPowという名前のメソッドがあることを想定する必要があり...

は、あなたがメソッドを持っていないにもかかわらず、このような方法を使用してコードを記述します。あなたのコードは手作業で見直されるか、教師がメソッドを提供してコードを実行するかもしれません。

コードをテストする場合は、いつでも自分で実装することができます。コードを入力する前にメソッドを削除するだけです。

ここでは、これは書面による練習問題です。


今、実装する方法int raiseToPow(int a, int b)

意味を考えてください。 3 は3 * 3 * 3 * 3を意味します。

したがって、aをそれ自身でb倍に乗算する方法を実装してください。

もう1つのエクササイズとして残しておきます。

1

あなたはこのようにそれを破ることができます:あなたはちょうどあなたが組み合わせの全てで状態を確認軽減しようとしている。この方法では

public boolean checkFermat(int a, int b, int c, int n) { 
    if(n != 2 && 
     (checkFermatCondition(a,b,c,n) || 
     checkFermatCondition(a,c,b,n) || 
     checkFermatCondition(b,c,a,n))) { 
     System.out.println("Holy smokes, Fermat was wrong!"); 
    } else { 
     System.out.println("No, that doesn’t work."); 
    } 
} 

を異なるパラメータでこのメソッドを呼び出すことにより、

private boolean checkFermatCondition(int a, int b, int c, int n) { 
    return raiseToPow(a,n)+raiseToPow(b,n) == raiseToPow(c,n); 
} 
0

あなたの機能raiseToPow()の機能がMath.powを使用して達成することができます。

import java.util.Scanner; 

class Main { 
    public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("Fermat's Last Theorem: a^n+b^n != c^n (n!=2)"); 
    int a, b, c, n; 
    System.out.print("Enter value for a:"); 
    a = s.nextInt(); 
    System.out.print("Enter value for b:"); 
    b = s.nextInt(); 
    System.out.print("Enter value for c:"); 
    c = s.nextInt(); 
    while(true){ 
     System.out.print("Enter value for n:"); 
     n = s.nextInt(); 
     if(n!=2) 
     break; 
     System.out.println("n cannot be 2"); 
    } 
    checkFremat(a,b,c,n); 
    } 

    public static void checkFremat(int a, int b, int c, int n){ 
    if ((int)Math.pow(a, n)+(int)Math.pow(b, n)!=(int)Math.pow(c, n)) 
     System.out.println("Fermat was correct!"); 
    else 
     System.out.println("Holy smokes, Fermat was wrong!"); 
    } 
} 

お試しくださいhere!

関連する問題