Назначение массива Java (несколько значений) - PullRequest
22 голосов
/ 05 апреля 2010

У меня уже определен массив Java, например

float[] values = new float[3];

Я хотел бы сделать что-то подобное в коде:

values = {0.1f, 0.2f, 0.3f};

Но это дает мне ошибку компиляции,Есть ли лучший способ определить несколько значений одновременно, а не делать это?

1008

Спасибо!

Ответы [ 10 ]

57 голосов
/ 05 апреля 2010

Да

float[] values = {0.1f, 0.2f, 0.3f};

Этот синтаксис только допустим в инициализаторе. Вы не можете использовать его в задании, где лучше всего сделать следующее:

values = new float[3];

или

values = new float[] {0.1f, 0.2f, 0.3f};

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

8 голосов
/ 05 апреля 2010

При объявлении вы можете сделать следующее.

float[] values = {0.1f, 0.2f, 0.3f};

Когда поле уже определено, попробуйте это.

values = new float[] {0.1f, 0.2f, 0.3f};

Помните, что вторая версия также создает новый массив,Если values была единственной ссылкой на уже существующее поле, оно получает право на сборку мусора.

3 голосов
/ 05 апреля 2010

Java не предоставляет конструкции, которая будет присваивать нескольких значений элементам существующего массива. Синтаксис инициализатора может использоваться ТОЛЬКО при создании нового объекта массива. Это может быть в момент объявления или позже. Но в любом случае инициализатор инициализирует новый объект массива, а не обновляет существующий.

2 голосов
/ 05 апреля 2010
values = new float[] { 0.1f, 0.2f, 0.3f };
1 голос
/ 05 апреля 2010

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

float[] values = {0.1f, 0.2f, 0.3f};

Нет способа сделать это, если значения являются переменными во время выполнения.

0 голосов
/ 08 ноября 2017

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

char A[];
A = new char[]{'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f', 'q', 'r'};
0 голосов
/ 24 февраля 2017
int a[] = { 2, 6, 8, 5, 4, 3 }; 
int b[] = { 2, 3, 4, 7 };

если вы берете число с плавающей точкой, то вы берете число с плавающей точкой, и это ваш выбор

это очень хороший способ показать элементы массива.

0 голосов
/ 19 января 2017
    public class arrayFloats {
      public static void main (String [] args){
        float [] Values = new float[3];
        float Incre = 0.1f;
        int Count = 0;

        for (Count = 0;Count<3 ;Count++ ) {
          Values [Count] = Incre + 0.0f;
          Incre += 0.1f;
          System.out.println("Values [" + Count + "] : " + Values [Count]);
        }


      }
    }

//OUTPUT:
//Values [0] : 0.1
//Values [1] : 0.2
//Values [2] : 0.3

Это не все, и все из присвоения значений для определенного массива. Поскольку я видел, что выборка была 0,1 - 0,3, вы могли бы сделать это таким образом. Этот метод очень полезен, если вы разрабатываете диаграммы и графики. Вы можете увеличить значение x на 0,1 до n-го раза.

Или вы хотите создать какую-то сетку.

0 голосов
/ 18 февраля 2014

Вы можете использовать локальную переменную, например:

    float[] values = new float[3];
    float[] v = {0.1f, 0.2f, 0.3f};
    float[] values = v;
0 голосов
/ 05 апреля 2010

Это должно работать, но медленнее и кажется неправильным: System.arraycopy(new float[]{...}, 0, values, 0, 3);

...