2017-03-04 12 views
0

ガイドラインは次のために呼び出します。intの配列で50桁の整数を表す方法は?

BigIntegers will be represented with 50 digit arrays of int (where each integer in the array is an integer in the range 0..9). 

You will have a class called BigInteger that has the following methods: 
BigInteger() --- initialize the BigInteger to 0 
BigInteger(int n) --- initialize the BigInteger to the value of n 
BigInteger(BigInteger n) --- a copy constructor 

私の質問があり、これについて行くの最も効果的な方法は何ですか?が、唯一の0に配列を初期化するために動作するようです

public class BigInteger { 
    int[] BigInteger = new int[50]; 

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

が....私はスタックオーバーフローを中心にチェックしましたが、空まで来ています:現在、私は持っています。誰かがこれについてどうやって正しい方向に向けるのだろうか?

+2

1.フィールドがBigIntegerとも呼ばれていない場合は、おそらくもっと簡単でしょう。 2.あなたが直面している問題はどこですか? 「効果的」とはどういう意味ですか?おそらく、10で割って、2番目のコンストラクタで整数が0になるまで連続した配列エントリのモジュールを取り出し、3番目のコンストラクタに配列をコピーするだけです。 –

+0

コードは分かりませんが、コードを明確にするために、クラスと属性に同じ名前を再利用しない方が良いでしょう。コードを読んだら後で誤解することがあります。すぐにわからないでしょう – azro

+0

ゼロ'int []'を出してください。数値配列はデフォルトでゼロに初期化されます。 – Andreas

答えて

0

私はJavaの男ではありませんが、それについてはどうですか?

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

public BigInteger(BigInteger bigInteger) { 
    for(int i = 0; i < BigInteger.length; i++) { 
     BigInteger[i] = bigInteger[i]; 
    } 
} 

public BigInteger(int n) { 
    String nstr = n.toString(); // not sure 
    int pos = 49; 
    for(int i = nstr.length - 1; i >= 0 ; i--) { 
     BigInteger[pos] = Integer.parse(nstr [i]); // parse each char, you get the idea 
     pos--; 
    } 
} 

@Andreasに感謝しました。

+0

これはJavaで効率的な方法ではありません。しかも、それはOPが完了するための割り当てだと思われるので、答えを出さないようにしましょう。また、最後の方法が間違っています。 – Andreas

+0

最後のメソッドを最初のメソッドにする必要はありますか?それはあまりにも簡単だが、私はそれについてどうなるべきかわからない。 – bgb102

+0

@Andreasまあ、彼は助けを求めた、私は答えを見つけるに値するかどうかを判断するためにここにいない。私の最後の方法について、あなたは編集したり、熟考したりできますか?私が言ったように、私はJavaの男ではありません。 – dbraillon

関連する問題