質問

Androidアプリケーションを開発しています。

このようなチャーアレイにサイズを設定したい:

public char[5] language;

しかし、それはうまくいきません。それを機能させるには、ナンバー5を削除する必要があります。

5文字に言語変数に制限したいと思います。どうやってやるの?

ありがとう。

役に立ちましたか?

解決

あなたはそのようにそれをすることはできません。 Javaでは、配列のタイプにはサイズが含まれていません。の私の答えを見てください この以前の質問. 。 (その部分を無視します abstract その質問の方法...それは本当の問題ではありません。)

配列のサイズは、それを作成する式によって決定されます。たとえば、5文字を含むCharアレイを作成し、後で21文字を含む別の配列に置き換えます。

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

作成は、等しいRHSの式によって行われることに注意してください。配列の長さは、「タイプ」ではなく「値」の一部です。

他のヒント

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).


資力 :

同じトピックについて:

変数自体はタイプのチャーアレイです(char[])、したがって、変数のサイズを制限することはできません タイプ. 。制限できるのは、インスタンス化してその変数に保存する配列のサイズです。

char[] language = new char[4];
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;
}

アレイリストをアレイの表現として使用して、一般的なスタイルを試してみたいと思うかもしれません。そのため、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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top