Set Größe auf char-Array in Java
-
08-10-2019 - |
Frage
Ich bin eine Android-Anwendung zu entwickeln.
Ich mag festgelegte Größe auf einen char-Array wie folgt:
public char[5] language;
Aber es funktioniert nicht. Ich habe zu löschen Nummer fünf, damit es funktioniert.
Ich möchte Sprachvariable zu fünf Zeichen begrenzen. Wie kann ich das tun?
Danke.
Lösung
Sie können es so nicht. In Java, die Art eines Arrays beinhaltet nicht seine Größe. Siehe meine Antwort auf href="https://stackoverflow.com/questions/3922848/abstract-method-of-a-set-length-array-in-java">. (Ignorieren Sie den Teil über abstract
Methoden in dieser Frage ... es ist nicht das eigentliche Problem.)
Die Größe eines Arrays wird durch den Ausdruck bestimmt, die es erstellt; z.B. Folgendes erzeugen ein char-Array, das 5 Zeichen enthält, dann ersetzt sie später mit einem anderen Array, das 21 Zeichen enthält.
public char[] language = new char[5];
...
language = new char[21];
Beachten Sie, dass die Schöpfung durch den Ausdruck auf der rechten Seite von dem Gleichheits erfolgt. Die Länge eines Arrays ist Teil seines ‚Wertes‘, nicht sein ‚Typ‘.
Andere Tipps
die JLS zitieren:
Ein Array der Länge ist nicht Teil seiner Art.
Um ein Array initialisieren Sie tun sollten:
public char[] language = new char[5];
Andere Lösungen sind
public char[] language = {0, 0, 0, 0, 0};
oder
public char[] language;
language = new char[5];
In Java kann die Array-Deklaration nicht enthält die Größe des Arrays; wir wissen nur die Variable ein Array eines bestimmten Typs enthalten. Hat einen Array initialisiert (und mit einer Größe) haben Sie es zu initialisieren, entweder durch new
oder durch eine Verknüpfung verwendet, die für ein Array in der gleichen Zeit zu initialisieren und Sollwerte ermöglicht.
Der beste Weg, um zu überprüfen zu haben, wenn ein Array mit einer bestimmten Größe hat, ist die Überprüfung tatsächlich die Größe des Arrays, sich mit so etwas wie if(array.length == 5)
.
Ressourcen:
Auf dem gleichen Thema:
Die Variable selbst ist nur vom Typ char-Array (char[]
), so dass Sie nicht die Größe der Variablen begrenzen Typ . Was Sie beschränken kann, ist die Größe des Arrays Sie instanziiert und speichern auf diese Variable:
char[] language = new char[4];
public char[] language = new char[5];
Sie können nicht die Variable selbst auf Länge 5 begrenzen; Sie müssen diese Invarianten in Ihrer Logik erzwingen. Das heißt, es sollte auch nicht öffentlich:
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;
}
Vielleicht möchten Sie mithilfe von Arraylist als die Darstellung des Arrays den generischen Stil versuchen. So Sie Flexibilität mit Arraylist Methoden finden können.
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;
}