2

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

サイズを次のようにchar配列に設定したいと思います。

public char[5] language;

しかし、それは機能しません。それを機能させるには、5番目の番号を削除する必要があります。

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

ありがとう。

4

5 に答える 5

9

そんなことはできません。 Java では、配列の型にサイズは含まれません。この以前の質問に対する私の回答を参照してください。(その質問のメソッドに関する部分は無視してabstractください...それは本当の問題ではありません。)

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

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

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

于 2010-10-16T15:59:05.210 に答える
5

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)


資力 :

同じトピックについて:

于 2010-10-16T15:52:51.923 に答える
1

配列の表現として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;
}
于 2010-10-16T17:46:21.517 に答える
1
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;
}
于 2010-10-16T15:53:07.667 に答える
1

変数自体はchar-array()型であるため、変数char[]のサイズを制限することはできません。制限できるのは、インスタンス化してその変数に保存する配列のサイズです。

char[] language = new char[4];
于 2010-10-16T15:53:30.590 に答える