【问题标题】:Passing an array and variable to a method and returning a smaller array将数组和变量传递给方法并返回较小的数组
【发布时间】:2017-04-06 05:31:57
【问题描述】:

我第一次发布问题时运气不佳,所以我想我会再试一次。我是一名新的 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} 被传回 main 后请向我解释我做错了什么记住我是 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;
   }
}

【问题讨论】:

    标签: java arrays for-loop methods


    【解决方案1】:

    简单的一个班轮就足够了:

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

    【讨论】:

      【解决方案2】:

      您错过了初始化数组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;
       }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-09-23
        • 2015-03-04
        相关资源
        最近更新 更多