BigIntegerの配列を作成しようとしていますが、配列自体が整数でインデックスを作成する必要があるようです(trueの場合は非常に愚かですが、私は何かを誤解していると思っています)。BigIntegersでBigIntegerの配列をインデックスする方法
BigInteger totalChoiceFunctions = BigInteger.valueOf(50031545098999704);
BigInteger[][] choiceFunctions = new BigInteger[totalChoiceFunctions][36];
しかし、これはエラー「型の不一致を:intにBigIntegerのから変換することはできません」原因:私は何をしようとしていることは、基本的に次のようです。これを解決するために、私は試しました:
BigInteger[][] choiceFunctions = new BigInteger[totalChoiceFunctions.intValue()][36];
しかし、これは役に立たないようです。私は、コンパイルと実行が、私はのランタイムエラーを取得する場合:
exception in thread 'main' java.lang.NegativeArraySizeException
混乱を、私はBigIntegerののintValue()メソッドは、Oracleのマニュアルを見て、このBigIntegerがintに収まるように大きすぎる」ことがわかりました下位32ビットのみが返されます。この変換によって、BigInteger値の全体的な大きさに関する情報が失われ、逆の結果が返されることに注意してください。 50031545098999704がint型ではあまりにも大きすぎると考えています(なぜ、配列を1から50031545098999704までのインデックスでインデックス付けしたいので、BigIntegersの配列に向けるのはなぜですか)。
私の理解では、その後、正しい場合:
BigInteger[][] chioceFunctions = new BigInteger[totalChoiceFunctions][36];
は店のBigIntegerの配列を作成しますがはint型でをインデックス化はまだです。 BigIntegersによってストアされ、インデックス付けされる配列を作成するにはどうすればよいですか?出来ますか?このために私が使用しているコードはint型ではなくlong型を使用すると動作するかもしれませんが、BigIntegersでインデックスを作成するようなサイズにしたいと考えています。私は明白な何かを欠いていますか
なぜこれが馬鹿に見えるのですか?インデックスの値は、格納できるオブジェクトの数だけを決定します。もっと多くのデータを格納する必要がある場合は、独自のコンテナを作成してください。 – ChrisCM
Java配列の制限を無視しても、50桁から36桁のBigInteger配列のメモリはありません。 – user2357112
あなたが必要とするメモリがどれくらいありますか?50031545098999704 * 64 * 36 ' –