2016-02-23 91 views
-7

我是Java的新手,開始閱讀Think Java,並停留在一些練習中。你介意幫我嗎?非常感謝調用方法

費爾馬大定理說,有沒有整數a,b和c等 即

a^n + b^n = c^n 

的情況除外當n = 2。寫一個名爲checkFermat(int a, int b, int c, int n)的方法 需要四個整數作爲參數a,b,c和n,如果費馬定理成立,則檢查 。如果n大於2並且結果爲 是真的,那麼a + bn = cn,程序應該打印出「Holy smokes, Fermat錯了!」否則程序應該打印「否, 不起作用。 「

您應該假設有一個名爲raiseToPow(int x, int pow的方法),它將兩個整數作爲參數,並將第一個參數提升爲第二個參數的冪。例如:

int x = raiseToPow(2, 3); 

將值8賦給x,因爲2^3 = 8

public class Buzz {} 

,但我不知道如何從checkFermat交出值提供給其他方法我必須調用raiseToPow以及如何編寫raiseToPow方法來工作。

回答

0

如果raiseToPow方法是假設你不能在Java中使用Math.pow()方法,一種方法來寫你自己的是:

public int raiseToPow(int base, int powerTo){ 
    if(power == 0){ 
     return 1; 
    } else{ 
     int result = x; 
     for(int i = 1; i <= powerTo; i++) { 
      result = result * x; 
     } 
     return result; 
    } 
} 

或者如果你喜歡,這裏是一個遞歸方法它:

public int raiseToPow(int base, int powerTo){ 
    if(power == 0){ 
     return 1; 
    } 
    return base * pow(base, --power); 
} 

要檢查費馬大定理,然後你可以用這個例子,改變數字的值,如果你想:

public void checkFermat(int a, int b, int c, int n){ 
    int x = raiseToPow(a, n); 
    int y = raiseToPow(b, n); 
    int z = raiseToPow(c, n) 
    if(x + y == z && n> 2){ 
     System.out.println("Holy smokes, Fermat was wrong!"); 
    } else{ 
     System.out.println("No, that doesn’t work."); 
    } 
} 

希望這有助於!

+0

謝謝尼爾,但這並不完全是我想到的。應該有一個方法checkFermat,在這裏你聲明4個整數 - a,b,c和n,並且應該有另一個名爲raisedToPow的方法,它將a提升爲n(a^n),對於b和c。我知道如何調用checkFermat併爲其賦值,但是我不知道如何編寫另一個名爲raiseToPow的方法,它可以將指定的值引發到checkFermat方法。 – ChocolateMooD

+0

我有'raiseToPow()'方法的答案,也顯示瞭如何在'checkFermat()'方法中使用它。對不起,我對你在評論中提出的問題感到有點困惑,因爲我認爲我的代碼能夠滿足你的要求。 – NiallMitch14

+0

它的工作:)我只是想要一個不同的方法,因爲我已經知道它,但感謝您的確認。有一些解釋和檢查是很好的。 – ChocolateMooD