for循环数学与java中的数组

时间:2016-11-23 03:13:17

标签: java arrays for-loop

我正在尝试在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。

我在预先排序的阵列打印上犯了什么错误?

7 个答案:

答案 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

这是你想要的样子吗?

[如果有帮助则投票]