web-dev-qa-db-fra.com

Affectation de tableau Java (valeurs multiples)

J'ai déjà défini un tableau Java, par exemple.

float[] values = new float[3];

Je voudrais faire quelque chose comme ça plus loin dans le code:

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

Mais cela me donne une erreur de compilation. Existe-t-il un moyen plus agréable de définir plusieurs valeurs à la fois, plutôt que de le faire?:

values[0] = 0.1f;
values[1] = 0.2f;
values[2] = 0.3f;

Merci!

22
Danny King

Oui:

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

Cette syntaxe est seulement autorisé dans un initialiseur. Vous ne pouvez pas l'utiliser dans une affectation pour laquelle vous pouvez effectuer les tâches suivantes:

values = new float[3];

ou

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

Essayer de trouver une référence dans les spécifications de langue pour cela, mais c'est toujours aussi illisible. Quelqu'un d'autre en trouve un?

57
skaffman

Sur déclaration, vous pouvez faire ce qui suit.

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

Lorsque le champ est déjà défini, essayez ceci.

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

Sachez que la deuxième version crée également un nouveau tableau . Si values était la seule référence à un champ déjà existant, il devient éligible pour le garbage collection.

8
Julian Lettner

Java ne fournit pas de construction qui assignera plusieurs valeurs aux éléments d'un tableau existant Les syntaxes d'initialisation ne peuvent être utilisées UNIQUEMENT que lors de la création d'un nouvel objet tableau. Cela peut être au moment de la déclaration, ou plus tard. Mais dans les deux cas, l'initialiseur initialise un nouvel objet de tableau et ne met pas à jour un objet existant.

3
Stephen C
values = new float[] { 0.1f, 0.2f, 0.3f };
2
bmargulies

Si vous connaissez les valeurs au moment de la compilation, vous pouvez faire:

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

Il n'y a aucun moyen de faire cela si les valeurs sont des variables au moment de l'exécution.

1
fastcodejava

Cela devrait fonctionner, mais est plus lent et se sent mal: System.arraycopy(new float[]{...}, 0, values, 0, 3);

0

par exemple, j'ai essayé tout ce qui précède pour les caractères, il échoue mais cela a fonctionné pour moi >> réservé un pointeur puis attribuer des valeurs

char A[];
A = new char[]{'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f', 'q', 'r'};
0
Hussein Muhammed

Vous pouvez utiliser une variable locale, telle que:

    float[] values = new float[3];
    float[] v = {0.1f, 0.2f, 0.3f};
    float[] values = v;
0
bou22
    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

Ce n'est pas le tout et tous les assigner des valeurs à un tableau spécifique. Depuis que j'ai vu l'échantillon était compris entre 0.1 et 0.3, vous pouvez le faire de cette façon. Cette méthode est très utile si vous concevez des graphiques et des graphiques. La valeur x peut être incrémentée de 0,1 jusqu'à la nième fois.

Ou vous voulez concevoir une sorte de grille.

0
Genc Gashi