2014-02-19 85 views
-1

我在看這段代碼,我發現並希望有人可以幫助我。該方案需要兩個數字,並打印到屏幕什麼是在兩個數字之間,因此,例如20和15將打印爲什麼我需要在Java中爲此數組添加+1?

[15,16,17,18,19,20]

我想知道爲什麼人會寫代碼的決定1添加到陣列中的位置:

int[] range = new int[(upper - lower + 1)]; 

,如果你要離開+1了print語句只會產生

[15,16,17,18,19]

希望有人能幫助我。

實際所需的程序輸出:數組:[ 15 16 17 18 19 20 ]

public class RangeLister { 

    int[] makeRange(int lower, int upper) { 

     int[] range = new int[(upper - lower + 1)]; 

     for (int i = 0; i < range.length; i++) { 
      range[i] = lower++; 
     } 
     return range; 
    } 

    public static void main(String[] arguments) { 
     int[] range; 
     RangeLister lister = new RangeLister(); 

     range = lister.makeRange(15, 20); 
     System.out.print("The array: [ "); 
     for (int i = 0; i < range.length; i++) { 
      System.out.print(range[i] + " "); 
     } 
     System.out.print("]"); 
    } 
} 
+1

你放在那裏的代碼不會產生你聲稱的順便輸出。 – thatidiotguy

+0

Ouch。抱歉,我粘貼了一些錯誤的。雖然修復了它。多麼尷尬! – user3312310

回答

0

如果要打印第一個整數和中間的每個整數包括最後一個整數,則範圍需要包含。添加+1會使範圍變得寬泛。

[1, 2]這樣的小範圍來看比較容易。

要打印:

1 2 

不添加+1的範圍將是

range = 2 - 1 = 1 

這意味着在你的循環,你只會調用打印1次。這將導致的輸出:

1 

通過添加+1要包括的最後一個號碼,以便您的範圍是:

range = 2 - 1 + 1 = 2 

現在,在您的for循環,你將打印2數字和你的輸出中會

1 2 
+0

這解釋得更好。謝謝。 – user3312310

4

因爲你希望你的範圍是包容性。

如果您離開+1,那麼您應該有20-15 = 5。然而,你想包括20和15,所以你需要一個額外的數字。算了算他們:

15, 16, 17, 18, 19, 20 

這是6個位數(20-15+1),而不是5位(20-15)

0

這是因爲居然有來自[15,20] 6個號碼。這些數字的差異只會給出5,而不會將數字打印到更大的數字,即20,加+1來解決問題。

0

你需要的範圍值是6,以便它可以遍歷/挑15到20

看看下面的語句。其中upper=20lower=15

int[] range = new int[(upper - lower + 1)]; 
range= 20-15+1 = 6 

如果你只是`int [] range = new int [(upper - lower)];

range= 5.你錯過了數字'20'。