为了保持我的技能,我决定编写一个小程序,在给出两个包含不同值的变量之后打印出数组的值。
我的期望是每个值都会显示在屏幕上,但这并没有发生。相反,只有最后一个元素的值显示在屏幕上(在下面的代码中,是数字" 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]);
}
答案 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.