为什么我需要在Java中为这个数组添加+ 1?

时间:2014-02-19 18:37:40

标签: java arrays printing

我正在查看我找到的这段代码,希望有人可以帮助我。该程序采用两个数字并在屏幕上打印两个数字之间的内容,例如20和15将打印

  

[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("]");
    }
}

4 个答案:

答案 0 :(得分:4)

因为您希望您的范围具有包容性。

如果您离开+1,则会有20-15 = 5。但是,您想要包括20和15,因此您需要一个额外的数字。算一算吧:

15, 16, 17, 18, 19, 20

这是6位(20-15+1),而不是5位(20-15)

答案 1 :(得分:0)

如果要打印第一个整数和之间的每个整数,包括最后一个整数,则范围必须是包含的。添加+1会使范围包含在内。

使用较小的范围(例如[1, 2]更容易看到。

你想打印:

1 2

如果不添加+1,则范围

range = 2 - 1 = 1

这意味着在你的for循环中,你只能打印1次。这将导致输出:

1

通过添加+1,您将包括最后一个数字,因此您的范围是:

range = 2 - 1 + 1 = 2

现在,在你的for循环中,你将打印2个数字,你的输出将是

1 2 

答案 2 :(得分:0)

那是因为[15,20]实际上有6个数字。这些数字的差异只会给出5不会打印数字到更大的数字,即20.添加+1可以解决问题。

答案 3 :(得分:0)

你需要将range的值设为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'。