私はAndroidアプリケーションを開発しています。
サイズを次のようにchar配列に設定したいと思います。
public char[5] language;
しかし、それは機能しません。それを機能させるには、5番目の番号を削除する必要があります。
言語変数を5文字に制限したい。どうやってやるの?
ありがとう。
私はAndroidアプリケーションを開発しています。
サイズを次のようにchar配列に設定したいと思います。
public char[5] language;
しかし、それは機能しません。それを機能させるには、5番目の番号を削除する必要があります。
言語変数を5文字に制限したい。どうやってやるの?
ありがとう。
そんなことはできません。 Java では、配列の型にサイズは含まれません。この以前の質問に対する私の回答を参照してください。(その質問のメソッドに関する部分は無視してabstract
ください...それは本当の問題ではありません。)
配列のサイズは、それを作成する式によって決まります。たとえば、次は 5 文字を含む char 配列を作成し、後でそれを 21 文字を含む別の配列に置き換えます。
public char[] language = new char[5];
...
language = new char[21];
作成は等号の右辺の式によって行われることに注意してください。配列の長さは、「型」ではなく「値」の一部です。
JLSを引用するには:
配列の長さはその型の一部ではありません。
配列を初期化するには、次のことを行う必要があります。
public char[] language = new char[5];
他の解決策は
public char[] language = {0, 0, 0, 0, 0};
また
public char[] language;
language = new char[5];
Javaでは、配列宣言に配列のサイズを含めることはできません。変数に特定のタイプの配列が含まれることだけがわかっています。配列を(およびサイズで)初期化するには、配列の初期new
化と値の設定を同時に行うことができるショートカットを使用するか、使用して配列を初期化する必要があります。
配列のサイズが指定されているかどうかを確認する最良の方法は、実際には、のようなものを使用して配列のサイズを自分で確認することですif(array.length == 5)
。
配列の表現としてArrayListを使用して、一般的なスタイルを試してみたいと思うかもしれません。したがって、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;
}
public char[] language = new char[5];
変数自体を長さ5に制限することはできません。ロジックでその不変条件を適用する必要があります。つまり、公開するべきではありません。
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;
}
変数自体はchar-array()型であるため、変数型char[]
のサイズを制限することはできません。制限できるのは、インスタンス化してその変数に保存する配列のサイズです。
char[] language = new char[4];