简单的Java数组程序

时间:2014-11-19 14:48:58

标签: java arrays for-loop

我试图将奇数存储在一个数组中,但是当我运行代码时,我得到9,这是答案的五倍。它只存储值9

以下是代码:

public class Number2 {
    public static void main(String[] args) {
        int[] element = new int[5];

        for(int i=0; i<5; i++) {
            for(int j=1; j <= 10; j=j+2) {
                element[i] = j;
            }
        }

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

你能告诉我我的节目有什么问题吗?

8 个答案:

答案 0 :(得分:7)

你使用两个循环,你只需要一个循环。当前对于数组中的每个元素,将其设置为1,然后设置为3,然后设置为5,然后设置为7,然后设置为9,每次都会覆盖前一个值。因此,最后,您的数组只是{9,9,9,9,9}。你可能想这样做:

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

答案 1 :(得分:2)

对于外部索引循环的每次迭代,内部循环(变量j)从1运行到9,并始终将值赋给element[i]因此每个element数组的值为9

按照你的逻辑,它应该是这样的:

for (int i = 0, j = 1; i < 5; i++, j += 2)
    element[i] = j;

您希望使用索引变量将沿设置的值递增。

一些改进:

由于element不仅仅是一个元素,因此您应该将其命名为复数,例如elements。也不要在代码中的多个位置重复数组长度,数组知道它的长度:elements.length,在for语句中使用它:

int[] elements = new int[5];

for (int i = 0, j = 1; i < elements.length; i++, j += 2)
    elements[i] = j;

你也不需要2个变量来做你想做的事情,可以根据索引来计算i th 奇数:

for (int i = 0; i < elements.length; i++)
    elements[i] = i*2 + 1;

答案 2 :(得分:1)

您正在将数组中的所有元素更改为j的最后一个值。

您的循环必须是:

for (int i=0;i<5;i++)
   {
      elements[i]=2*i +1;
   }

以这种方式思考:

当i为0时,您将分配从1到9的元素[0]值(j循环)。分配的最后一个值是9.

答案 3 :(得分:1)

您正在将每次迭代中的数组值替换为9(分别为1,3,5,7,9)

尝试下面

for(int i=0; i<5; ){
  for(int j=1; j <= 10; j=j+2,i++){
      element[i] = j;
  }
}

你也可以用一个for循环来写这个

 for(int j=1,i=0 ; j <= 10 && i<5; j=j+2,i++){
  element[i] = j;
 }

输出

enter image description here

答案 4 :(得分:1)

当最后一次内循环执行j = 9的值并且j成为11时,它将退出。您将j的每个值存储在同一索引中。即。你在内循环中每次都覆盖element[i],而i在内循环中不会改变。因此,只有j的最终值可用。
下面的代码将给出前五个奇数,即(1, 3, 5, 7, 9)

for(int i=0,j=1; i <= 4; j=j+2,i++)
{
    element[i] = j;
}

答案 5 :(得分:0)

用一层用于循环就可以了

int elements [] = new int [5];

    for (int i=0,j=1; j<=10; i++, j=j+2 )
    {
        elements[i] = j;
    }

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

答案 6 :(得分:0)

public static void main(String[] args) {
   int[] element = new int[5];

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

    for(int i : element){
        System.out.println(i);
    }
}

答案 7 :(得分:0)

您有两个循环,j循环是i循环的内部代码,它的运行时间是i循环的编码的5倍,对于i = 0,j将运行j = 1,2,3,4,5,6 ,7,8,9且大于9将存储在j [0]中 接下来,对于i = 1,j = 1,2,3,4,5,6,7,8,9,并且比9将存储在j [1]中,依此类推, 所以你将不得不改变

int j=1;  
for(int i=0;i<5;i++){
      element[i]=j;
      j=j+2;
}

并且仅用于打印

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