[英]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=20
和lower=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.