Domanda

Sto sviluppando un'applicazione Android.

Voglio dimensioni insieme a un array di caratteri in questo modo:

public char[5] language;

Ma non funziona. Devo cancellare il numero cinque per farla funzionare.
Io voglio limitare a cinque caratteri per variabile lingua. Come posso fare?

Grazie.

È stato utile?

Soluzione

Non si può fare in quel modo. In Java, il tipo di un array non include la sua dimensione. Vedere la mia risposta a questa domanda precedenza . (Ignorare la parte sui metodi abstract in questa domanda ... non è il vero problema.)

La dimensione di un array è determinato dall'espressione che crea; per esempio. la seguente crea un array di char che contiene 5 caratteri, poi lo sostituisce con un altro array che contiene 21 caratteri.

public char[] language = new char[5];
...
language = new char[21];

Si noti che la creazione è fatto da l'espressione a RHS dei pari. La lunghezza di un array è parte del suo 'valore', non il suo 'tipo'.

Altri suggerimenti

Per citare i JLS:

  

lunghezza di un array non è parte del suo tipo.

Per inizializzare un array si dovrebbe fare:

public char[] language = new char[5];

Altre soluzioni sono

public char[] language = {0, 0, 0, 0, 0};

o

public char[] language;
language = new char[5];

In Java, la dichiarazione di matrice non può contenere la dimensione della matrice; sappiamo solo la variabile conterrà una matrice di un tipo specifico. Per avere un array inizializzato (e con una dimensione) si deve inizializzare sia utilizzando new o utilizzando un collegamento che consente di inizializzare e valori impostati per un array allo stesso tempo.

Il modo migliore per avere per verificare se una matrice ha una dimensione specificata, è in realtà il controllo della dimensione della matrice te stesso con qualcosa di simile if(array.length == 5).


Risorse:

Sullo stesso argomento:

La variabile in sé è solo di tipo char-array (char[]), quindi non è possibile limitare la dimensione della variabile tipo . Che cosa si può limitare la dimensione della matrice si crea un'istanza e Salva per quella variabile:

char[] language = new char[4];
public char[] language = new char[5];

Non è possibile limitare la variabile stessa lunghezza 5; è necessario rispettare tale invariante nella logica. Il che significa che, inoltre, non dovrebbe essere pubblica:

private char[] language = new char[5];

...

public void setLanguage(final char[] language)
{
   // or maybe language.length != 5, or whatever you really mean
   if (language.length > 5)
     throw new IllegalArgumentException("language must have length <= 5");
   this.language = language;
}

Forse si vuole provare lo stile generico utilizzando ArrayList come la rappresentazione della matrice. Così si può trovare la flessibilità utilizzando metodi ArrayList.

private ArrayList<Character> alchar = new ArrayList<Character>(5);

............................................


public void addChar(Character ch){
    if (alchar.size() <= 5)
       alchar.add(ch);
}

public ArrayList<Character> getChars(){
   return alchar;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top