Передача и получение массива в качестве параметра функции в Java - PullRequest
0 голосов
/ 26 января 2012

Может кто-нибудь помочь мне с возвратом массива из функции X(). Я хочу передать этот массив функции Y() в качестве параметра в том же классе.

Что у меня есть:

int[] create()throws IOException {
    System.out.println("Enter Size of Array");
    BufferedReader b=new BufferedReader(new InputStreamReader(System.in)); 
    n=Integer.parseInt(b.readLine());
    //A=new int[n];
    System.out.println("Enter Array"); for(i=0;i<n;i++) {
        int y=Integer.parseInt(b.readLine());
        A[i]=y;
    }
    return A;
}

void getarray() {
}

Ответы [ 5 ]

6 голосов
/ 26 января 2012

Вы можете сохранить аргумент в X() в переменной-члене, а затем получить доступ к массиву через переменную-член в Y().

class YourClass {

    private int[] someArray;

    public void X(int[] argArray) {
        someArray = argArray;         // save it like this
        ...
    }

    public void Y() {
        ...
        someArray[3] = 2;             // access it here
    }
}

Обратите внимание, что если вы захотите сохранить такиевременные переменные в ThreadLocal<int[]>, если вы хотите быть потокобезопасными.


Относительно обновления: Если A является переменной-членом, вы можете получить доступ к A вgetarray(), либо просто ссылаясь на A, либо this.A, если он скрыт какой-то локальной переменной.

1 голос
/ 26 января 2012

Чтобы передать массив в качестве параметра методу, который вы можете использовать:

public void X(int[] array) {
}

Если вы хотите получить доступ к массиву из двух разных методов одного класса, вы можете сделать массив членомкласс:

public class MyClass {
    int[] array = new int[10];

    public void X() {
    }

    public void Y() {
    }
}

Теперь и X, и Y могут обращаться к массиву.

1 голос
/ 26 января 2012

Вы передаете массив в метод, объявив метод

public void myMethod(int[] ary);

, а затем, если у вас есть экземпляр объекта, вы делаете

int[] myAry = new int[9];
obj.myMethod(myArray);

теперь, если ваш myMethod вызывает ваш второй метод, он может просто передать ссылку на массив второму методу, который должен принять аргумент массива.Если нет, то вам нужно сохранить массив в поле члена вашего класса.

class MyClass {
    int[] tmp;

    public void myMethod(int[] ary) {
        this.tmp = ary;
    }

    public void myMethod2(){
        // can use this.tmp, which will be null if it isn't set.
    }


}
0 голосов
/ 26 января 2012

В метод можно передать что угодно, включая массивы. Все, что вам нужно сделать, это добавить квадратные скобки [] после объекта или простого типа переменной (например, int[] input, char[] input, JTree[] trees и т. Д. И т. Д.)

public void X(int[] input) {
    //do stuff with 'input'
    Y(input);
}

public void Y(int[] input) {
    //do stuff with 'input'
}

Обратите внимание, что метод Y принимает массив типа простой переменной int. Если этого не произойдет, вам придется хранить массив в поле члена в вашем классе, чтобы использовать ваш массив в методе Y.

0 голосов
/ 26 января 2012
class Z
{
  private int a[];

  public void x(int input [])
  {
     a=input.clone();//store input values in 'a' safely
  }

  public void y()
  {
   //work with a [] here
   System.out.println(a[0]);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...