我正在尝试排列和打印从500开始并在1处停止的数组 我已经使用以下代码尝试过此操作,但是将从1开始打印输出,直到500:
int [] aftel = new int [501];
for (int teller3 = 500; teller3 > 0; teller3--){
aftel[teller3] = teller3;
}
System.out.println(Arrays.toString(aftel));
但是使用下面的代码,数组将以正确的方式打印出,但是我试图在打印出值之前将数组完整地排列:
int [] aftel = new int [501];
for (int teller2 = 1; teller2 <= 500; teller2++){
optel500[teller2] = teller2;
System.out.print(optel500[teller2]+" ");
}
答案 0 :(得分:4)
在第一个循环中,您将teller3
用作索引和的值。这意味着索引500的值为500,与您想要的相反。
您还会对数组的大小感到困惑。
正确的方法是直接循环并从500中减去该值
int [] aftel = new int [500];
for (int teller3 = 0; teller3 < 500; teller3++){
aftel500[teller3] = (500 - teller3) + 1;
}
或者对数组索引执行相同操作
int [] aftel = new int [500];
for (int teller3 = 500; teller3 > 0; teller3--){
aftel[500 - teller3] = teller3;
}
答案 1 :(得分:3)
尝试:
int[] array = IntStream
.range(0, 500) // get a stream of [0, 499]
.map(i -> 500 - i) // map it to [500, 1]
.toArray();
答案 2 :(得分:0)
这里的问题是您正在向后填充数组。从最高有效索引到最低索引1。要获得结果,您应该从索引1填充到最高有效索引。
引入另一个变量index = 1
并以这种方式使用将解决此问题:
int [] aftel = new int [501];
int index = 1;
for (int teller3 = 500; teller3 > 0; teller3--){
aftel[index] = teller3;
index++;
}
以及另一种用于循环的衬里:
int [] aftel = new int [501];
for (int teller3 = 500, index = 1; teller3 > 0; teller3--, index++){
aftel[index] = teller3;
}
System.out.println(Arrays.toString(aftel));
答案 3 :(得分:0)
问题是您在位置500上设置了500,但必须在位置0上设置500。 这应该起作用:
int [] aftel = new int [501];
for (int teller3 = 500; teller3 > 0; teller3--){
aftel[500 - teller3] = teller3;
}
System.out.println(Arrays.toString(aftel));
答案 4 :(得分:0)
尝试这样。
int noOfElements = 500;
int[] array = new int[noOfElements];
for (int i = 0; i < noOfElements; i++){
array[i] = noOfElements - i;
}
for(int a : array){
System.out.println(a);
}