-3

我想知道,如果我创建一个返回数组的方法。我如何才能在主要或其他方法中访问该数组中的特定点?

例如:

public static int[] deleteElement(int[]thing, int target){
 int[]newThing;

 newThing=thing;
 int y=0;
 for (int i=0; i<thing.length; i++){
   if (thing[i]==target){
     newThing[y]=thing[i+1];}
   y++;
   }

 return newThing;

 }



 public static int test(int[]someArray){


   //here how can i access newThing[i]? 

   }

谢谢一堆

4

3 回答 3

0

您真正要问的问题是如何对数组的子数组进行操作。毕竟,您知道如何访问特定元素:a[i]符号。

您可以使用批量方法类:Array.copyArray.copyOfRangeSystem.arrayCopy。但即使使用这些方法,您也做了大量工作,尤其是当您必须删除数组中的一些项目时。您做事的方式可能是 O(N^2) 操作。请改用列表。

public static Integer[] deleteElement(int[] array, int valueToDelete){
    List<Integer> list = new ArrayList<>();
    for (int n: array) {
        if (n != valueToDelete) {
            list.add(n);
        }
    }
    return Arrays.toArray(new int[0]);
}

但即使这样也是有问题的。您可能应该List首先使用某种类型,并且由于您在中间删除,您可能需要一个LinkedList.

public static <T> void deleteValue(List<T> list, T value) {
    for (Iterator<T>it = list.iterator(); it.hasNext();) {
        if (value.equals(it.next()) {
            it.delete();
        }
    }
}
于 2013-06-18T00:47:36.070 回答
0

如果您尝试将数组传递给另一个方法,您可以这样做:

int [] myArray  = yourClass.deleteElement(thing, target)
yourClass.test(myArray); 

如果您尝试访问它,那么您可以按照分配它的方式进行操作:

elementYouWantToAccess = 2 //or 3, or 6, or whatever element you want
someArray[elementYouWantToAccess];

从技术上讲,你可以说:

someArray[1]; //this would access the element at position 1.

您所做的i只是列出一个元素位置。通过选择位置来访问数组。

如果你不知道你想要的确切元素,你可以像这样遍历整个数组:

public static int test(int[]someArray){

  for(int i=0; ii < someArray.length; i++){
      if(someArray[i] == someCondition){
      //do something to someArray[i]
      }
  }

}

直到你找到你想要的元素,然后将它分配给一个变量,或者做任何你想做的事情。

于 2013-06-18T00:29:36.047 回答
0

您需要调用deleteElement(int[]thing, int target),它返回一个int[]. 您无权访问newThing外部deleteElement(int[]thing, int target),因为它是在方法内部声明的。所以:

int[] list = deleteElement(ra,target); //list = newThing
list[0], list[1], ...

因此,为了从方法外部访问数组中的元素,您必须将返回的数组分配给您的类/方法中的某些内容,然后对该变量进行操作。

于 2013-06-18T00:33:42.927 回答