2017-03-06 29 views
0

對於這個項目,我創建了數組,每個數組有50個元素,每個元素的值介於0和9之間,並使用名爲「BigIntegers」的數組進行加法,減法,乘法和除法。有幾個較小的方法稱爲遞增和遞減,我很難找出答案。這是我做的代碼...這些方法將如何設置爲將數組中的最後一個數字遞增和遞減1? Java

public class BigInteger { 

    int[] BigInteger = new int[50]; 

    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    //x BigInteger(): creates a BigInteger of all 0's    x 
    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    public BigInteger() { 
     for (int i = 0; i < 50; i++) { 
     BigInteger[i] = 0; 
     } 
    } 

    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    //x BigInteger(n): creates a BigInteger the size of n   x 
    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  
    public BigInteger(int n) { 
     for (int i = 49; i > 0; i--) { 
      BigInteger[i] = n%10; 
      n = n/10; 
     } 
     BigInteger[0] = n; 
    } 

    public int[] getBigInteger() { 
     return BigInteger; 
    } 

    public BigInteger(BigInteger n) { 
     for(int i = 0; i < 50; i++) { 
      BigInteger[i] = n.getBigInteger()[i]; 
     } 
    } 

    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    //x print(): prints out each element of the BigInteger array  x 
    //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    public void print() { 
     int index = 0; 

     for (int i = 0; i < BigInteger.length; i++) { 
      if (BigInteger[i] == 0) { index = 0; } 
      else { index = i; break; } 
     } 

     for(int i = index; i < BigInteger.length; i++) { 
      System.out.print(BigInteger[i] + " "); 
     } 
    } 

    public void decrement() { 
     int last = BigInteger.length; 
     for(int i = last; i < 50; i++) { 
      if (i == 0) { } 
      else last = BigInteger[last] - 1; 
     } 
    } 

    public static void main(String args[]) { 
     BigInteger big = new BigInteger(50); 
     BigInteger big2 = new BigInteger(); 
     BigInteger big3 = new BigInteger(602345812); 
} 

這些方法的功能是:)

•無效增量(---由1

增加調用對象的值•void decrement()---將調用對象的值減1 1

我花了好幾個小時試圖弄清楚這些,看起來是什麼,簡單的方法。任何幫助或建議? 感謝一

+4

注意:調用你的類'BigInteger'是令人困惑的,因爲[這個名字有一個衆所周知的類](https://docs.oracle.com/javase/7/docs/api/java/math/ BigInteger.html);在該類中調用一個變量'BigInteger'(其類型不是'BigInteger',而是'int []')也是令人困惑的。 –

+0

歡迎來到Stack Overflow!看起來你可能會問作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 (即使這不是作業,無論如何請考慮建議。) –

+0

@AndyTurner確實令人困惑! – shash678

回答

0

如果我理解你的問題很好,你應該試試這個(與@Andy特納和@Yang李的言論)爲起點:

public void increment() { 
    for (int i = BigInteger.length - 1; i; i--) 
     if (BigInteger[i] < 9) { 
     BigInteger[i]++; 
     for (int j = i + 1; j < BigInteger.length; j++) 
      BigInteger[j] = 0; 
     break; 
     } 
     else if (i == 0) 
     // cannot increment 9 
} 

public void decrement() { 
    for (int i = BigInteger.length - 1; i; i--) 
     if (BigInteger[i] > 0) { 
     BigInteger[i]--; 
     for (int j = i + 1; j < BigInteger.length; j++) 
      BigInteger[j] = 9; 
     break; 
     } 
     else if (i == 0) 
     // cannot decrement 0 
} 

這將遞增/遞減最後intBigInteger數組的元素,其中BigInteger.length - 1是數組中最後一個元素的索引。

+0

當數字超過9或低於0時會發生什麼? –

+0

當然,這是一個初步的答案,讓我解決這個:) – SegFault

0

已經有這篇文章的一些答案,但你需要小心,因爲其中一些答案不處理溢出。如果最後一位數字是9,並且您將其增加1,則它會溢出,如果最後一位數字爲0並且您減去,則也會出現問題。

您還應該考慮BigInteger數組中所有數字均爲'9'的情況。在這種情況下,如果您將其增加1,則不會在您的陣列中允許更多房間。如果BigInteger中的所有數字均爲'0'並且您希望將其減1,那麼可能會發生同樣的情況。對於這些情況,您應該可能會引發錯誤。

更新

我已經實現了遞歸的方式來增加大整數。 請注意,我處理了BigInteger中所有數字均爲'9'的情況。你應該檢查這個輸入是否是預期的,否則你應該刪除這個檢查。

public void increment() { 
    increment(BigInteger.length-1); 
} 

private void increment(int index) { 
    if (index < 0) { 
     throw new RuntimeException("BigInteger maximum capacity reached!"); 
    } 
    if (BigInteger[index] < 9) { 
     BigInteger[index]++; 
    } else { 
     BigInteger[index] = 0; 
     increment(--index); 
    } 
} 

基本上,這將繼續尋找前面的數字,直到它小於9,然後增加該數字,在這個過程中,將設置任何「9」遇到「0」。

我沒有實施「減少」的方法,因爲我認爲你可以想出你自己的解決方案會很好。

+0

謝謝你的幫助!這絕對讓我瞭解如何做到這一點。那麼遞減會更容易做遞歸遞增嗎? (我對遞歸很新穎) – Icescout

+0

我個人認爲遞歸更容易思考和理解。但是,任何遞歸都可以重寫成循環。所以如果你對遞歸不滿意,循環是另一種選擇。所以是的,你肯定可以寫遞歸遞減。我不會說這會更容易,只要用任何你喜歡的方法去做就行。快樂的編碼! – AttitudeL

相關問題