我如何从另一种方法访问数组的特定点

时间:2013-06-18 00:25:31

标签: java arrays methods

我想知道,如果我创建一个返回数组的方法。我怎么能迟到主要或另一种方法访问该数组中的特定点?

例如:

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

   }

非常感谢

3 个答案:

答案 0 :(得分: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]
      }
  }

}

直到找到所需的元素,然后将其分配给变量,或者根据需要执行任何操作。

答案 1 :(得分:0)

您需要致电deleteElement(int[]thing, int target),并返回int[]。您无法访问newThing之外的deleteElement(int[]thing, int target),因为它是在方法内部声明的。所以:

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

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

答案 2 :(得分: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();
        }
    }
}