2016-06-03 6 views
0

Так что мне нужно вернуть несколько массивов из выполняемой функции. Проблема в том, что я не знаю, какое значение функции использовать? (например, функция int, строковая функция и т. д.). Как я могу вернуть несколько значений? Мне нужно отправить барьер и барриеры от arrayGen() до барьеров(). Спасибо за вашу помощь!Возвращение нескольких массивов через функции (обработка)

Финал:

int barriers(){ 
    if (R == 1){  
     while (size>0){ 
      barrierx[size-1] = randomInt(512); 
      barriery[size-1] = randomInt(512);  
      size = size - 1; 
     } 

     while (sizeC>0){ 
      ellipse(barrierx[sizeC-1], barriery[sizeC-1], 100, 100); 
      sizeC = sizeC - 1;   
     } 
     sizeC = sizeB;  
     R = 0; 
    } 
    return 5; 
    } 

    int arrayGen(){ 
     int size = randomInt(11); 
     int sizeB = size; 
     int sizeC = size; 

     int[] barrierx = new int[size]; 
     int[] barriery = new int[size]; 
    } 

EDIT:

int arrayGen(){ 

    int size = randomInt(11); 
    int sizeB = size; 
    int sizeC = size; 
    int[] result = new int[2]; 

    int[] barrierx = new int[size]; 
    int[] barriery = new int[size]; 

    while (size>0){ 
    barrierx[size-1] = randomInt(512); 
    barriery[size-1] = randomInt(512);  
    size = size - 1; 
    } 


    result[0] = barrierx; 
    result[1] = barriery; 
return result; 
} 

тип несоответствие не может конвертировать из ИНТ [] в целое

+1

Если вы хотите вернуть несколько массивов, верните 'int [] []' (массив массивов) – SomeJavaGuy

+0

Вы можете использовать return 'List' –

+0

Пожалуйста, прочитайте [это (как спросить)] (http: /stackoverflow.com/help/how-to-ask) и [this (mcve)] (http://stackoverflow.com/help/mcve), прежде чем спрашивать, так как они помогут вам получить больше и лучше ответы сообщества. Задавая вопрос, постарайтесь быть максимально конкретными, а также покажите, какие ответы/попытки вы уже сделали. Если нам нужно угадать любую информацию, скорее всего, эта помощь не будет полезной ... Добро пожаловать в stackoverflow и удачу. – Bonatti

ответ

1

Определить класс, содержащий все поля данных, которые нужно. Затем верните объект этого класса.

0

Вы не можете вернуть несколько значений из функции, но вы можете вернуть одно значение, которое их все обертывает.

Если типы значений являются однородными, используйте массив или коллекцию этого типа, как предложено в комментариях Кевина Эше. Например:

int[] barrierx = new int[size]; 
int[] barriery = new int[size]; 
return {barrierx, barriery}; // later access barrierx by result[0] and barriery by result[1] 

или более явно:

int[] barrierx = new int[size]; 
int[] barriery = new int[size]; 
int[][] result = new int[size][2]; 
result[0] = barrierx; 
result[1] = barriery; 
return result; 

Как вы можете видеть из объявления типа возвращаемого значения, метод подписи должен быть int[][].

Если типы значений являются гетерогенными, используйте класс, чьи поля содержат эти значения, с конкретными типами, как указано JF Meier.

+0

Оба массива полны случайной генерации целых чисел. Как мне это сделать? –

+0

Является ли мой пример понятным? Обратите внимание, что содержимое массивов не имеет значения (хотя их размер делает, так как это часть их «типа»). – Aaron

+0

Да, это имеет смысл для меня, но я получаю «несоответствие типа», не может преобразовать из int [] в int 'on result, барьер и barriery, см. Мое редактирование? Благодарю. Я использую обработку, если это помогает. –

Смежные вопросы