【问题标题】:Simple Java array program简单的Java数组程序
【发布时间】:2015-01-17 03:25:23
【问题描述】:

我试图将奇数存储在一个数组中,但是当我运行代码时,我得到了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]);
        }
    }
}

你能告诉我我的程序有什么问题吗?

【问题讨论】:

    标签: java arrays for-loop


    【解决方案1】:

    只需使用另一层 for 循环

    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]);
    }
    

    【讨论】:

      【解决方案2】:

      你有两个循环,j 循环是 i 循环的内部代码,它运行 5 次作为 i 循环的编码,对于 i=0,j 将运行 j=1,2,3,4,5,6 ,7,8,9 和大于 9 将存储在 j[0] next for 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]);
          }
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        【解决方案4】:
        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);
            }
        }
        

        【讨论】:

          【解决方案5】:

          您将每次迭代 i 中的数组值替换为 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;
           }
          

          输出

          【讨论】:

          • 第一个循环的目的是什么?
          【解决方案6】:

          对于外部索引循环的每次迭代,内部循环(带有变量j)从19 运行,并且始终将值分配给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个变量来做你想做的事,ith奇数可以根据索引计算:

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

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

              你的循环需要是:

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

              这样想:

              当 i 为 0 时,您将分配给 elements[0] 值从 1 到 9(j 循环)。最后分配的值是 9。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-11-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多