将数组和变量传递给方法并返回较小的数组

时间:2017-04-06 05:31:58

标签: java arrays for-loop methods

我第一次发布问题时没有运气,所以我想我会再试一次。我是一名新的Java程序员,目前正处理一小段代码。简而言之,我已经创建了一个数组和一个变量,我希望这个程序要做的是获取数组和变量,将其传递给方法,让方法查看数组,如果数组中的任何数字是与变量“8”相同,将它们从数组中“创建一个新数组”返回到main并将其打印出来。

我希望数组{2,4,8,19,32,17,17,18,25,17,8,3,4,8}显示{2,4,19,32} ,17,17,18,25,17,3,4}被传回主要后请向我解释我做错了什么,请记住我是java的新手。

public class Harrison7b
{
   public static void main(String [] args)
   {
      int[] arrayA = {2,4,8,19,32,17,17,18,25,17,8,3,4,8};
      int varB = 8;
      // Call with the array and variable you need to find.
    int[] result =  newSmallerArray(arrayA, varB);

    for(int x = 0; x < arrayA.length; x++)
    {
      System.out.print(arrayA[x] + " ");


    }

   }

   public static int[] newSmallerArray( int[] arrayA, int varB)
   {
      int count = 0;   

      for(int x = 0; x < arrayA.length; x++)
      {
         if(arrayA[x] == varB)
         {
            count++;
         }
      }
         int [] arrayX = new int[arrayA.length - count];

         int index = 0;


      for(int B = 0; B < arrayA.length; B++)
      {
         if(arrayA[B] != varB)
         {
           index++;
         }
      }
      return arrayX;
   }
}

2 个答案:

答案 0 :(得分:1)

简单的衬垫就足够了:

    public static int[] newSmallerArray( int[] arrayA, int varB)
{
    return Arrays.stream(arrayA).filter(i -> i != varB).toArray();
}

答案 1 :(得分:0)

你错过了初始化阵列arrayX,尝试按照解决方案

 public class Harrison7b
  {
   public static void main(String [] args)
   {
    int[] arrayA = {2,4,8,19,32,17,17,18,25,17,8,3,4,8};
    int varB = 8;
    // Call with the array and variable you need to find.
    int[] result =  newSmallerArray(arrayA, varB);

  for(int x = 0; x < result.length; x++)  {
    System.out.print(result[x] + " ");
   }

 }

  public static int[] newSmallerArray( int[] arrayA, int varB)
   {
  int count = 0;   

  for(int x = 0; x < arrayA.length; x++)
  {
     if(arrayA[x] == varB)
     {
        count++;
     }
  }
     int [] arrayX = new int[arrayA.length - count];

     int index = 0;


  for(int B = 0; B < arrayA.length; B++)
  {
     if(arrayA[B] != varB)
     {
         arrayX[index]= arrayA[B];
       index++;
     }
  }
  return arrayX;
 }
}