繁体   English   中英

为什么我需要在Java中将此数组加+1?

[英]Why do I need to add + 1 to this array in Java?

我正在看我发现的这段代码,希望有人可以帮助我。 该程序将接收两个数字,然后将两个数字之间的内容打印到屏幕上,例如,将打印20和15

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

我想知道为什么这个人会写代码,决定在这里将1加到数组中:

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

如果您不考虑+1,则打印语句只会产生

[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 ,则将有20-15 = 5 但是,您希望包括20和15,因此需要一个额外的数字。 只需数一下:

15, 16, 17, 18, 19, 20

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

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

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

您要打印:

1 2

如果不加+1,范围将是

range = 2 - 1 = 1

这意味着在您的for循环中,您只会调用print 1次。 这将导致输出:

1

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

range = 2 - 1 + 1 = 2

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

1 2 

这是因为实际上[15,20]有6个数字。 这些数字之差只能得到5,而不会打印出更大的数字(即20)。加+1解决了这个问题。

您需要将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”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM