Значения массива в методе не могут быть возвращены в main (java) - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в Java и пытаюсь выяснить, как оператор return работает с массивами. В программе я пытаюсь вернуть массив, заполненный методом 'squares', на main. Я собираюсь написать метод int[] squares(int n), который возвращает массив с квадратами всех натуральных чисел от 1 до n. В настоящее время я просто тестирую и пытаюсь понять, как сдать myArray. Я получаю ошибку:

Array8.java: 7: ошибка: не удается найти символ int [] mainArray = myArray; "

public class Array8{

  public static void main(String[] args)
  {
    squares(3);
    int[] mainArray = myArray; //cannot find symbol

    for(int i = 0; i < mainArray.length; i++){
      System.out.println(mainArray[i]);
    }
  }

  public static int[] squares(int n){

    int[] myArray = new int[n];
    for(int i = 0; i < myArray.length; i++){
      myArray[i] = 1 + i;
    }
    return myArray;
  }

}

Ответы [ 4 ]

2 голосов
/ 25 октября 2019

Вам нужно собрать выходные данные, которые вы возвращаете из метода squares, в вашу переменную mainArray, как показано ниже. Переменная myArray является локальной переменной квадрата метода и, следовательно, не будет доступна внутри вашего метода main.

int[] mainArray = squares(3);
0 голосов
/ 25 октября 2019

вы не инициализировали myArray в методе main, метод myArray из вашего squares () выходит за рамки вашего метода main.

public static void main(String[] args)
{
    int[] myArray = squares(3);
    int[] mainArray = myArray; 

    for(int i = 0; i < mainArray.length; i++){
      System.out.println(mainArray[i]);
    }
}

Исправит вашу проблему, но выглядит более чистобудет.

{
int[] mainArray = squares(3); 

for(int i = 0; i < mainArray.length; i++){
  System.out.println(mainArray[i]);
    }
}
0 голосов
/ 25 октября 2019

вы создали int [] myArray как часть метода squares (), который является локальной переменной. Если вы хотите использовать его, вы можете создать его как глобальную переменную, а затем назначить.

Если вы хотите проверить, как работает тип возвращаемого значения int [], вы можете изменить свой код int [] mainArray = myArray;int [] mainArray = squares (3);- в этой строке retun int [] будет назначен mainArray.

0 голосов
/ 25 октября 2019

myArray является локальным для метода squares (). Вы можете получить к нему доступ только из этого метода.

То, что вы хотите:

mainArray = squares(3);

...