我对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
为什么结果不一样?这些是工作版本和损坏版本之间的唯一变化。我想使用大列表并且不想手动输入数据(但我喜欢根据需要制作单个范围的灵活性),我使用 Arrays.fill 错误还是其他一些新手错误?