2010-04-04 2 views
22

Ho già definito un array Java ad es.Assegnazione array Java (più valori)

float[] values = new float[3]; 

mi piacerebbe fare qualcosa di simile più avanti nel codice:

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

ma che mi dà un errore di compilazione. C'è un modo migliore per definire più valori contemporaneamente, piuttosto che farlo ?:

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

Grazie!

risposta

55

Sì:

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

Questa sintassi è solo ammissibile in un inizializzatore. Non è possibile utilizzare in un incarico, in cui il seguente è il migliore che puoi fare:

values = new float[3]; 

o

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

Cercando di trovare un punto di riferimento nella specifica lingua, ma è come illeggibile come mai. Qualcun altro ne trova uno?

+0

Credo che questo potrebbe essere che, 10.6 Array Inizializzatori, http: // java .sun.com/docs/books/jls/third_edition/html/arrays.html # 11358 – Adrian

+2

Questa sembra essere la parte rilevante della grammatica: http://java.sun.com/docs/books/jls/third_edition/ html/arrays.html # 11358 - Personalmente, ho sempre trovato che le specifiche del linguaggio Java fossero molto leggibili, rispetto ai documenti simili. –

+8

Si potrebbe voler notare che il codice in basso crea un nuovo array. –

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

In dichiarazione è possibile effettuare quanto segue.

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

Quando il campo è già definito, provare questo.

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

Si noti che anche la seconda versione crea un nuovo array. Se values era l'unico riferimento a un campo già esistente, diventa idoneo per la garbage collection.

1

Se si conoscono i valori in fase di compilazione si può fare:

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

Non c'è modo di farlo se i valori sono variabili in fase di esecuzione.

3

Java non fornisce un costrutto che assegnerà di più valori agli elementi di una matrice esistente. Le sintassi di inizializzazione possono essere utilizzate SOLO durante la creazione di un nuovo oggetto array. Questo può essere al punto di dichiarazione, o più tardi. Ma in entrambi i casi, l'inizializzatore sta inizializzando un nuovo oggetto array, non aggiornando uno esistente.

0

questo dovrebbe funzionare, ma è più lento e si sente male: System.arraycopy(new float[]{...}, 0, values, 0, 3);

0

è possibile utilizzare una variabile locale, come:

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

questo non è il tutto ed essere tutto di assegnazione valori su una matrice specifica. Dal momento che ho visto il campione era 0.1 - 0.3, potresti farlo in questo modo. Questo metodo è molto utile se stai progettando grafici e grafici. È possibile aumentare il valore x di 0,1 fino all'ennesimo.

Oppure si desidera progettare una griglia di qualche tipo.

+0

aggiungere un testo descrittivo può aiutare gli altri a capire la tua risposta –

-1
int a[] = { 2, 6, 8, 5, 4, 3 }; 
int b[] = { 2, 3, 4, 7 }; 

se si prende il numero float Poi si prende galleggiante ed è la vostra scelta

questo è molto buono modo per mostrare gli elementi dell'array.

0

per esempio Ho provato tutti sopra per i caratteri non riesce ma che ha funzionato per me >> riservato un puntatore quindi assegnare valori

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