私は Java のすべての動作に精通しているわけではないので、明らかな間違いを犯していたら申し訳ありません。基本的に、アイテムのリストと範囲を指定して、すべてのアイテムを含めるために使用できるパーセンテージを計算するプログラムを作成しています。たとえば、果物のバスケットがあり、リンゴ、ナシ、桃を 20% 未満のアイテムと 60% を超えるアイテムがない状態で入れたい場合、プログラムが教えてくれます。
そのために、下限(最小パーセンテージ)と上限(最大パーセンテージ)を持つリストがあります。私の問題は、リストを手動で作成するとうまくいくように見えることです(上記の例を使用すると、3つのアイテム、20〜60の範囲で41のアイテムが得られます)が、使用するArrays.fill
と882の結果が得られます(0を含み、含まないため、これは間違っています)下限を尊重します)。
問題が何であるかわかりません..調べてArrays.fill
みたところ、私が望むことをしているようです。また、両方のケース(手動とArrays.fill)でリストにアイテムをリストしましたが、どちらも同じように見えます。
違いは次のとおりです(作業バージョン):
static final String[] names = new String[] {"apples", "pears", "peach" }; //test
static final int[] low_bound = new int[] {20,20, 20}; //this allows us to invididually set the range of each item
static final int[] high_bound = new int[] {60,60, 20};
動作しないバージョン:
static final String[] names = new String[] {"apples", "pears", "peach" };
static int[] low_bound = new int[names.length];
static int[] high_bound = new int[names.length];
//then in the main method
Arrays.fill(low_bound, 20); //fills the min list with default value
Arrays.fill(high_bound, 60); //fills the max list with default value
結果が異なるのはなぜですか?これらは、動作中のバージョンと壊れたバージョンの間の唯一の変更です。大きなリストを使用したいのですが、データを手動で入力したくありません (ただし、必要に応じて個々の範囲を作成できる柔軟性が気に入っています)。