我正在尝试在java中使用Arrays方法。我使用以下代码来创建Java数组:
int numArr[] = new int[10];
for(int i = 0; i< numArr.length;++i)
{
numArr[(numArr.length)-i-1] = (i+1)*2;
System.out.println("numArr[i]" + numArr[i]);
}
我的意图是使用它来制作清单20,18,...,4,2。然后,我想使用Arrays排序方法来查看它是否正常工作。
我无法理解的奇怪结果是上面的代码打印出来:
numArr[i] = 0;
numArr[i] = 0;
numArr[i] = 0;
numArr[i] = 0;
numArr[i] = 0;
numArr[i] = 10;
numArr[i] = 8;
numArr[i] = 6;
numArr[i] = 4;
numArr[i] = 2;
我理解每次打印i的简单错误,但我不明白为什么初始结果都是0.我想也许它只是失败了,它们仍然只是初始化为0默认值。但后来我意识到在使用Arrays.sort()之后的代码中,列表正确地打印了所有索引2,4,...,18,20。
我在预先排序的阵列打印上犯了什么错误?
答案 0 :(得分:2)
您的错误在于如何在循环中索引数组。您正在分配数组元素(numArr.length)-i-1
,但打印数组元素i
。尝试在循环中打印数组元素(numArr.length)-i-1
以查看刚刚分配的值。
答案 1 :(得分:1)
您尝试在结果填充数组之前打印结果。 在这里,你从后面填充,但试图从前面打印(尚未给出任何价值)
等待数组填充并循环遍历数组以获得正确的结果
这样做可以解决您的问题,
for(int i = 0; i< numArr.length;++i)
{
numArr[(numArr.length)-i-1] = (i+1)*2;
}
for(int i = numArr.length-1; i>-1;i--)
{
System.out.println(numArr[i]);
}
答案 2 :(得分:1)
我们说i=0
或第一个循环。
numArr[(numArr.length)-i-1] = (i+1)*2;
运行它,你得到
numArr[9] = 2;
然而,您打印尚未分配的numArr[0]
。
一旦到达数组的中点,您就会开始看到值
如果您仍然感到困惑,请在纸上写出您的算法
答案 3 :(得分:1)
您正在尝试打印其中包含默认值(0)的索引。而是尝试将已经分配了值的索引打印到
for(int i = 0; i< numArr.length;++i)
{
numArr[i] = (i+1)*2;
System.out.println("numArr[i]" + numArr[i]);
}
或
for(int i = 0; i< numArr.length;++i)
{
numArr[(numArr.length)-i-1] = (i+1)*2;
System.out.println("numArr[i]" + numArr[(numArr.length)-i-1]);
}
答案 4 :(得分:0)
正如@Vinay在打印时指出的那样,你使用i作为尚未填充的数组元素的下标。如果要在填充时打印数组,则必须使用相同的索引
int numArr[] = new int[10];
for(int i = 0; i< numArr.length;++i)
{
numArr[(numArr.length)-i-1] = (i+1)*2;
System.out.println("numArr[(numArr.length)-i-1]);
}
答案 5 :(得分:0)
最简单的方法是填充数组,然后用另一个循环打印结果:
public class Test
{
public static void main ( String [ ] args )
{
int numArr[] = new int[10];
for(int i = 0; i< numArr.length;++i)
{
numArr[(numArr.length)-i-1] = (i+1)*2;
}
for(int i = 0; i < numArr.length; i++)
{
System.out.println("numArr["+i+"]" + numArr[i]);
}
}
}
numArr[0]20
numArr[1]18
numArr[2]16
numArr[3]14
numArr[4]12
numArr[5]10
numArr[6]8
numArr[7]6
numArr[8]4
numArr[9]2
答案 6 :(得分:0)
int numArr[] = new int[10];
for(int i = numArr.length-1; i >= 0; i--)
{
numArr[i] = (i+1)*2;
System.out.println("numArr["+i+"]" + numArr[i]);
}
输出:
numArr[9]20
numArr[8]18
numArr[7]16
numArr[6]14
numArr[5]12
numArr[4]10
numArr[3]8
numArr[2]6
numArr[1]4
numArr[0]2
这是你想要的样子吗?
[如果有帮助则投票]