Как вернуть массив в java
Для возвращения массива в Java необходимо объявить возвращаемый тип метода как массив и вернуть этот массив из метода с помощью ключевого слова return . Например, чтобы вернуть массив целых чисел из метода, можно использовать следующий код:
public static int[] returnArray() int[] arr = 1, 2, 3, 4, 5>; return arr; >
В этом примере метод returnArray объявлен как public static int[] , что означает, что он возвращает массив целых чисел. Внутри метода создается массив arr и он возвращается с помощью ключевого слова return . После вызова метода можно сохранить возвращенный массив в переменной и использовать его дальше в коде.
Возврат массива из метода, что в коде не так? [закрыт]
Вопрос вызван проблемой, которая больше не воспроизводится, или опечаткой. Хотя похожие вопросы могут быть уместны на этом сайте, решение для этого вопроса вряд ли поможет будущим посетителям. Обычно можно избежать подобных вопросов написанием и исследованием минимальной программы для воспроизведения проблемы до публикации вопроса.
Закрыт 8 лет назад .
Прошу мне объяснить, что в этом коде не так ?
public void someMethod(string[] cats) < cats = < "tiger", "lion", "leopard" >; >
Визуал студио ругается.
Отслеживать
задан 23 апр 2015 в 16:01
1,502 4 4 золотых знака 21 21 серебряный знак 50 50 бронзовых знаков
Нужно учить теорию. Void вообще ничего не возвращает.
23 апр 2015 в 21:50
В крайнем случае public void someMethod( out string[] cats)
23 апр 2015 в 21:59
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Массивы в C# создаются с помощью ключевого слова new, объявления типа элементов массива, скобок [] и количества элементов в массиве (опционально):
int[] a = new int[2]; int[] b = new int[];
В случае, если массив инициализируется сразу, тип можно опустить (он будет выведен из типов элементов):
int[] b = new [] < 1, 2 >;
А вообще, что вы хотите сделать?
Если установить в переданный массив новые значения в рамках метода, то:
public void someMethod(string[] cats) < cats = new string[] < "tiger", "lion", "leopard" >; >
Если новые значения нужны и после выполнения метода, тогда надо пользоваться ключевым словом ref :
public void someMethod(ref string[] cats) < cats = new string[] < "tiger", "lion", "leopard" >; >
Если вам нужно просто вернуть новые значения, то так:
public string[] someMethod(string[] cats) < return new string [] < "tiger", "lion", "leopard" >; >
возвращение методами массивов
Метод, который возвращает массив, должен иметь тип возвращаемого массива.
Копировать
- using System;
- class One
- //ВНИМАНИЕ. метод должен иметь тип возвращаемого массива
- public int [] Fun( int arg)
- //размер массива
- int size=0;
- /*в переменную размера массива записывается количество
- итераций, когда числа четные, после этого количество
- итераций суммируется и получаем размер массива*/
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- size++;
- >
- >
- //теперь размер массива известен, создаем сам массив
- int [] arra = new int [size];
- //индекс массива
- int index = 0;
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- //запись четных значений в массив
- arra[index++] = i;
- >
- >
- //метод возвращает массив
- return arra;
- >
- >
- class Program
- public static int Main()
- Random R = new Random();
- One O = new One();
- /*создаем массив, присваиваем ему возвращаемый методом массив,
- в качестве аргумента, методу передаем диапазон случайного
- целого числа от 20 до 30*/
- int [] arra = O.Fun(R.Next(20, 30));
- //выводим значения массива на консоль
- foreach ( int i in arra)
- Console.Write( » » , i);
- >
- Console.WriteLine();
- Console.ReadKey();
- return 0;
- >
- >
- using System;
- class One
- //ВНИМАНИЕ. метод должен иметь тип возвращаемого массива
- public int [] Fun( int arg)
- //размер массива
- int size=0;
- /*в переменную размера массива записывается количество
- итераций, когда числа четные, после этого количество
- итераций суммируется и получаем размер массива*/
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- size++;
- >
- >
- //теперь размер массива известен, создаем сам массив
- int [] arra = new int [size];
- //индекс массива
- int index = 0;
- for ( int i=0; i <=arg; i++)
- if (i%2 == 0)
- //запись четных значений в массив
- arra[index++] = i;
- >
- >
- //метод возвращает массив
- return arra;
- >
- >
- class Program
- public static int Main()
- Random R = new Random();
- One O = new One();
- /*создаем массив, присваиваем ему возвращаемый методом массив,
- в качестве аргумента, методу передаем диапазон случайного
- целого числа от 20 до 30*/
- int [] arra = O.Fun(R.Next(20, 30));
- //выводим значения массива на консоль
- foreach ( int i in arra)
- Console.Write( » » , i);
- >
- Console.WriteLine();
- Console.ReadKey();
- return 0;
- >
- >
0 2 4 6 8 10 12 14 16 18 20 22 24
Возврат массива из метода
Решил попробовать поработать с возвратом массива из метода.
Набросал небольшой пример с переводом числа в двоичную систему. 0 и 1 должны записываться в массив . Число для перевода передаётся в функцию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
class Mas { public int[] func(int num) { int[] b = new int[80]; for (int i = 256; i > 0; i /= 2) { if ((num & i) == 0) b[i] = 0; else b[i] = 1; Console.Write(b[i]); } return b; } } class Program { static void Main(string[] args) { Mas ob1=new Mas(); int[] arr = ob1.func(7); } } }
Но при запуске вылетает с ошибкой (выход индексов за пределы).
Что я не так сделал? Подскажите , пожалуйста .