打印Java数组 - 只显示最后一个元素的值,为什么?

时间:2014-09-14 08:19:17

标签: java arrays

为了保持我的技能,我决定编写一个小程序,在给出两个包含不同值的变量之后打印出数组的值。

我的期望是每个值都会显示在屏幕上,但这并没有发生。相反,只有最后一个元素的值显示在屏幕上(在下面的代码中,是数字" 2" - >这是一个整数,不是一个字符串)。

为什么会这样?

另外,为什么动态初始化会产生我想要的结果,但不是我在代码中执行的方式?

非常感谢。

int[] arrayOne;
arrayOne = new int[2];

int numOne = 1;`
int numTwo = 2;`

for (int i = 0; i < arrayOne.length; i++) {`

    arrayOne[i] = numOne;
    arrayOne[i] = numTwo;
    System.out.println(arrayOne[i]);

}

6 个答案:

答案 0 :(得分:0)

如果要将两个变量的值放入数组中,则需要使用两个赋值:

arrayOne[0] = numOne;
arrayTwo[1] = numTwo;

现在您可以使用for循环打印出数组的内容。

但这种方法无法使用数组。

答案 1 :(得分:0)

您正在为同一位置设置不同的值,导致仅保存最后一个值。

您的代码类似于:

arrayOne[0] = 1;
arrayOne[0] = 2;

在这两行之后,arrayOne[0]将保持值为2。

如果要放置这两个值,则需要将它们放在不同的位置:

arrayOne[0] = 1;
arrayOne[1] = 2;

答案 2 :(得分:0)

在Java中(以及我所知道的几乎所有语言),一个数组每个单元只能包含一个值,即如果你执行“array [i] = 1”并且在“array [i] = 2”之后,那么我-cell将其值从1更改为2,而不是在1之后附加值2.最后,您的数组将在每个单元格中包含numTwo。

如果你想在每个单元格中使用不同的值初始化数组,我恐怕你需要手动完成,而不是使用循环。

答案 3 :(得分:0)

你需要做这样的事情:

public class demo{

    private static int i = 0;
    private static int[] demo = new int[10];

    public static void main(String[] args){
        for(int i = 0; i < 10; i++){
            addElementToArray(i);
        }
        for(int i = 0; i < demo.length; i++){
            System.out.println(demo[i]);
        }
        addElementToArray(i);
    }

    public static void addElementToArray(int input){
        try{
            demo[i] = input;
            i++;
        }catch(ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
        }
    }
}

不要在for循环中设置值,即(imo)简单的愚蠢,以实现您想要实现的目标

答案 4 :(得分:0)

在使用循环遍历数组之前,需要对数组进行填充。

arrayOne[0] = numOne;
arrayOne[1] = numTwo;

然后做你的循环:

for (int i = 0; i < arrayOne.length; i++) 
{
    System.out.println(arrayOne[i]);
}

答案 5 :(得分:0)

初始化数组的许多方法......

int[] a = new int[2];
a[0] = 1;
a[1] = 2;

或者:

int[] a = new int[2];
for( int i = 0; i < a.length; i++ ){
  a[i] = i + 1;
}

或者:

int[] a = new int[]{ 1, 2 };

或者

int valOne = 1;
int valTwo = 2;
int[] a = new int[]{ valOne, valTwo };

当你在println之前看到循环中相同数组元素的多个赋值时要小心。这是你想要的吗?第二个获胜并将当前(第i个)元素设置为2.