2016-11-13 5 views
-3

Я пытаюсь создать метод, который создает новый массив с узнаваемым именем каждый раз, когда он вызывается. Предполагается создать массивы размером 2, которые хранят два двойных значения внутри.Метод, который создает новый массив при каждом вызове?

public static double[] newarray(double x, double y) { 
    double a[] = new double[2]; 
    a[0] = x; 
    a[1] = y; 
} 

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

Например, первый массив будет следующим: a1, a2, a3 и т. Д.

+1

Массивов не имеют названия, переменные делают, но они не помогут вам здесь (если вы не думаете о чем-то вроде 'а = newarray (... .); a1 = newarray (...); '). – Tom

+0

Вы не понимаете что-то важное (не знаете, что именно, возможно, разница между полями и переменными) - этот вопрос не имеет смысла. – fdreger

+0

Прошу прощения, если мой вопрос был плохо сформулирован и в конечном итоге вас смутил, я очень новичок в программировании. Я думаю, что я могу решить свою проблему с предложениями других пользователей.Спасибо за ваше время. – schlafen

ответ

1

Настройка функции следующим образом:

public static double[] newArray(double x, double y) { 
    return new double[]{x, y}; 
} 

Затем вызовите его следующим образом:

double[] myArray1 = newArray(10d, 20d); 
double[] myArray2 = newArray(3d, 4d); 
1

так, что я могу создать несколько массивов, как это с той же функцией

Вы уже можете.

Добавьте эту строку в конце вашего newarray() функции:

return a; 

Теперь заметим, что разнообразие потребителей может вызвать ту же функцию.

double a1[] = newarray(0,1); 
double a2[] = newarray(2,3); 
System.out.printf("%f\n", a1[0]); // prints 0, as required 

Обратите внимание, как создать массив a2 не заменяет существующий массив a1 в любом случае.

Итак, мы видим, что та же функция newarray() может вызываться много раз, возвращаясь значением ссылки на массив отдельного каждый раз.


Я признаю, что внутриnewArray(), имя переменной a будет повторно использоваться каждый раз. Но так как это не переменная-член, а также статическая переменная: ее состояние теряется каждый раз, когда функция завершается. Он будет не повторного использования той же памяти при последующих вызовах.

0

Если вы хотите, чтобы разные имена для массивов имели свои причины для этого, возможно, с помощью поддержки структуры HashMap для этого.

public static void main(String[] args) { 
     HashMap<String, double[]> arrays = new HashMap<>(); 
     String name = "a"; 
     for (int i = 0; i < 10; i++) { 
      arrays.put(name + i, newarray(23, 43)); 
     } 
    } 

    public static double[] newarray(double x, double y) { 
     double[] a = new double[2]; 
     a[0] = x; 
     a[1] = y; 
     return a; 
    } 

Надеется, что это поможет

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