Java 中的数组方法

Array Methods in Java

我正在尝试编写一种方法,使我能够将数字添加到数组中。如果我输入一些 execpt 0 它将是数组的第一个数字。下一个(0 除外)将是第二个数字。当我输入 0 时,程序将结束。 例如 ; 1,2,3,4,5,0 将显示 1,2,3,4,5 但当我输入它时,我得到 0,5,5,5,5。你能帮忙吗?

这里是更新版本,没有错误。

import java.util.*; 

public class test
{
     public static int[] addToArray(int[] bag, int value)
     {
         int i; 
         for(i = 0; i <= bag.length - 1; i++)
         {
              bag[i] = value;
              if(bag[i] == 0)
              {
                   return bag;
              }

         }
         return bag;
      }

      public static void main(String[] args) 
      {
           Scanner scan = new Scanner(System.in);
           int[] bag = new int[5];
           int i, value;
           i = 0;
           System.out.println("Enter the values : ");
           do
           {
                value = scan.nextInt();
                addToArray(bag, value);               
           }
           while(bag[i] != 0);

           System.out.println(Arrays.toString(bag)); 
       }
}

您的 addToArray 方法每次调用时都会替换整个数组。这就是 for 循环正在做的事情

for(i = 0; i <= bag.length - 1; i++) {
    bag[i] = value;
    ...
}

当您输入 0 时,此代码:

bag[i] = value
if(bag[i] == 0) {
  return bag;
}

会设置bag[0] = 0然后if会成功然后return包。

你需要的是找到你应该在数组的哪个位置添加这个值

public static int findNextEmptyPosition(bag) { .... }

...
int nextPosition = findNextEmptyPosition(bag);
bag[nextPosition] = value;
...

//check is the value is zero and stop your while loop.

好的。我解决了。问题是在重新定义整个数组的每个循环中,所以它都会打印我在 0 之前输入的最后一个数字。谢谢大家向我展示这个问题。我通过向该方法添加另一个参数来解决。索引参数"i"。现在,在循环中不会从零开始。它将从它停止的地方开始,这样我就可以定义空数组而无需重新定义以前的数组。谢谢大家的帮助。

import java.util.*; 

public class test
{
  public static int[] addToArray(int[] bag, int value, int i)
  {
    int j; 
    for(j = i; j <= bag.length - 1; j++)
    {
        bag[j] = value;
        if(bag[j] == 0)
        {
            for(; j <= bag.length - 1; j++)
            bag[j] = 0;
            return bag;
        }

      }
      return bag;
   }

   public static void main(String[] args) 
   {
     Scanner scan = new Scanner(System.in);
     int[] bag = new int[5];
     int i, value;
     i = 0;
     System.out.println("Enter the values : ");
     do
     {
         value = scan.nextInt();
         addToArray(bag, value, i);
         i++;               
     }
     while(value != 0);

     System.out.println(Arrays.toString(bag)); 
   }
}