我正在查看我找到的这段代码,希望有人可以帮助我。该程序采用两个数字并在屏幕上打印两个数字之间的内容,例如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("]");
}
}
答案 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=20
和lower=15
。
int[] range = new int[(upper - lower + 1)];
range= 20-15+1 = 6
如果只做`int [] range = new int [(upper - lower)];
range= 5.
你错过了数字'20'。