I’m not that familiar with all the behavior of Java so sorry if I’m making an obvious mistake. Basically I’m making a program that given a list of items & range it calculates percentages that would could be used to include all items. For example, if you have a basket of fruit and want to put Apple, Pears, Peaches with no item less than 20% and no item greater than 60% the program will tell you.
In order to do that I have a list that has the lower bound(min. percentage) and the higher bound(max. percentage). My problem is when I create the list manually it seems to work(using the above example, 3 items, 20-60 range I get 41 items), but when I use Arrays.fill I get 882 results(which is wrong because its including 0’s and not respecting the lower bound).
I’m not sure what the problem is..I looked into Arrays.fill and it seems to do what I want, I also listed the items in the list in both cases(manual vs. Arrays.fill) and they both look the same.
Here’s the differences(working version):
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};
Not working version:
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
Why are the results different? These are the only changes between the working version and broken version. I want to use large lists and don’t want to enter the data manually(but I like the flexibility of making individual ranges if I want), am I using Arrays.fill wrong or some other rookie mistake?
You are comparing Apples and Oranges, for your static test, the
high_boundvalues are{60, 60, 20}but when you useArrays.fill(), you are setting it to {60, 60, 60}.