所以这里有一长串if语句,它们应该检测值int[] anArray;
是否在一定范围内.anArray = new int[15];
值的int[] anArray;
起点anArray[0]
为:49 50 51 59 0 5 9 10 15 19 50 55 89 99 100
这是代码的一部分,用于确定给定值是否在一个范围内:
int[] counterarray = new int[10]; for (x = 14; x >= 0; x--) { System.out.println(anArray[x]); if (anArray[x] >= 0 && anArray[x] < 10) { counterarray[0] = counterarray[0] + 1; } if (anArray[x] >= 10 && anArray[x] < 20) { counterarray[1] = counterarray[1] + 1; } if (anArray[x] >= 20 && anArray[x] < 30) { counterarray[2] = counterarray[2] + 1; } if (anArray[x] >= 30 && anArray[x] < 40) { counterarray[3] = counterarray[3] + 1; } if (anArray[x] >= 40 && anArray[x] < 50) { counterarray[4] = counterarray[4] + 1; } if (anArray[x] >= 50 && anArray[x] < 60) { counterarray[5] = counterarray[5] + 1; } if (anArray[x] >= 60 && anArray[x] < 70) { counterarray[6] = counterarray[6] + 1; } if (anArray[x] >= 70 && anArray[x] < 80) { counterarray[7] = counterarray[7] + 1; } if (anArray[x] >= 80 && anArray[x] < 90) { counterarray[8] = counterarray[8] + 1; } if (anArray[x] >= 90 && anArray[x] < 101) { counterarray[9] = counterarray[9] + 1; } } System.out.println("counterarray[0] is " +counterarray[0]); System.out.println("counterarray[1] is " +counterarray[1]); System.out.println("counterarray[2] is " +counterarray[2]); System.out.println("counterarray[3] is " +counterarray[3]); System.out.println("counterarray[4] is " +counterarray[4]); System.out.println("counterarray[5] is " +counterarray[5]); System.out.println("counterarray[6] is " +counterarray[6]); System.out.println("counterarray[7] is " +counterarray[7]); System.out.println("counterarray[8] is " +counterarray[8]); System.out.println("counterarray[9] is " +counterarray[9]);
是的,这就是代码,但if语句的长列表似乎有点多余.for循环翻转每个数组值并确定它们属于哪个范围.然后int[] counterarray
将值的总和相加.那么如何让那长长的if语句列表在美学上更令人愉悦呢?
int[] counterarray = new int[10]; for (x = 14; x >= 0; x--) { if (anArray[x] >= 0 && anArray[x] < 101) { int idx = Math.min(anArray[x] / 10, 9); ++counterarray[idx]; } }
如果所有范围都是10的倍数(例如0-9,10-19,20-29等),那么我们可以用一个简单的除以10得到索引counterarray
.该Math.min
部分是处理奇数的最后一个案例,其(原始)范围为90-100; 在100的情况下,idx将等于10,但是将其Math.min
钳位以使其不会成为数组中的越界索引.
该if
检查是为了确保我们只看我们预期(在这种情况下0-100)范围内的值.否则,我们可能会错误地将最后一个桶增加大值(例如200).