你的第一個問題是在這裏:
int[] rangeArray = new int[0];
這樣做是實例,並命名爲rangeArray
型數組。然後將其初始化爲長度0
。因此,添加到此數組的任何內容都會超出範圍。您應該將其初始化爲返回結果的長度;在這種情況下很困難。
然後我們的代碼塊:
for (int i = low; i <= high; i++) //start at the lowest possible number and go to the highest
{
//check for validity
}
有一點這裏的概念問題;你從low
到high
迭代。如果low
非常低(-1百萬?)和high
同樣非常高?這是很多想法,沒有結果。
相反,通過你實際上是給數組讓循環:
for (int idx = 0; idx < a.length; idx++) {
//Check the value of int, if it is in the desired range, save it.
}
最後,讓我們來看看這個:
if (low >= a.length && high <= a.length)
這大致翻譯爲「如果我的期望範圍的低端大於我檢查的數字列表的長度,並且我的範圍的高端小於同樣的長度,請選擇'真正'分支。「這不是你要找的。
取而代之,您希望「如果當前指數值介於我的最低值和最高值之間,請保留它。」
if (a[idx] >= low && a[idx] <= high)
滾動起來,我們得到:
public static int[] range(int[] a, int low, int high)
{
int[] rangeArray = new int[a.length];//this is the most we will need
int numbersFound = 0;//to keep track of result array index
for (int idx = 0; idx < a.length; idx++) {
{
if (a[idx] >= low && a[idx] <= high)
{
rangeArray[numbersFound++] = a[i];
}
}
return rangeArray;
}
注意,在這種情況下,你的陣列將有可能在年底一些空細胞。使用前請注意!
'INT [] rangeArray =新INT [0]的;'怎麼辦你認爲這是嗎? –
從這裏開始:[使用數組的Oracle教程](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html) –
不需要粗魯。他所描述的功能的輸入/輸出是正確的。 –