【问题标题】:Array Method issue数组方法问题
【发布时间】:2017-04-06 03:10:58
【问题描述】:

我的 java 程序有问题。我是 Java 的新手,只是无法弄清楚它到底有什么问题。简而言之,我已经在 main 中声明了一个数组和一个变量,我已经创建了我的方法调用,并且希望我的数组通过变量传递到我的方法中。然后我希望该方法获取我的数组并计算变量“8”出现的次数,从数组中删除 8 并将一个新的较小数组返回给 main。下面是我的代码。我觉得好像我只是缺少一个代码块有什么建议吗?

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




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

         }
      }
      return arrayX;
   }
}

【问题讨论】:

  • 你有什么问题?
  • 为什么我的代码不返回没有 8 的新数组
  • 所以您想删除阵列中的8
  • Arraylist 是您问题的最佳解决方案 Arraylist 变量能够调整其 Array 对象的大小,只需将您的 int 转换为 Integer 类
  • 是的,将数组向下传递给我的方法,然后我想在方法中向下计算,删除 8 并将其发送回 main。

标签: java arrays for-loop if-statement methods


【解决方案1】:

您实际上不需要返回数组,因为当您将数组传递给一个方法时,您还传递了它的内存地址,这意味着它与您更改的地址相同,因此它也会更改 main 方法的数组A,因为您只是改变同一个内存地址的值

import java.util.*;




public class Help
{


public static void main(String[] args)
{
    ArrayList<Integer> arraysA = new ArrayList<Integer>();
    arraysA.add(Integer.valueOf(2));
    arraysA.add(Integer.valueOf(4));
    arraysA.add(Integer.valueOf(8));
    arraysA.add(Integer.valueOf(19));
    arraysA.add(Integer.valueOf(32));
    arraysA.add(Integer.valueOf(17));
    arraysA.add(Integer.valueOf(17));
    arraysA.add(Integer.valueOf(18));
    arraysA.add(Integer.valueOf(25));
    arraysA.add(Integer.valueOf(17));
    arraysA.add(Integer.valueOf(8));
    arraysA.add(Integer.valueOf(3));
    arraysA.add(Integer.valueOf(4));
    arraysA.add(Integer.valueOf(8));
     int varB=8;
    newSmallerArray(arraysA,varB);
    for(Integer i:arraysA)
    {
        System.out.println(i);
    }


}
public static void newSmallerArray(ArrayList<Integer> arraysA,int varB)
{
    for(int i=0;i<arraysA.size();++i)
    {
        if(Integer.valueOf(arraysA.get(i))==varB)
        {
            arraysA.remove(i);
        }
    }
}

}

【讨论】:

    【解决方案2】:

    试试这个不需要for循环的代码:

    List<Integer> list = new ArrayList<Integer>(Arrays.asList(arrayA));
    list.removeAll(Arrays.asList(8));
    arrayA = list.toArray(array);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2011-01-06
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2011-02-04
    • 2020-05-26
    相关资源
    最近更新 更多