2011-02-01 29 views
25

carが初期化されていない/要素のないStringの配列である次の行に問題があります。文字列配列の長さを見つける方法は?

String car []; 
System.out.println(car.length); 

解決策はありますか?

+0

解決方法はおそらく問題によって異なります。それが何であるか教えてください。 – jarnbjo

答えて

49

carは初期化されていないため、長さはありません。値はnullです。しかし、コンパイラは、としてコンパイルすることを許可せず、次のエラーを投げます。可変車が初期化されていない可能性があります

あなたが最初にそれを初期化する必要があり、その後、あなたが.lengthを使用することができます。

String car[] = new String[] { "BMW", "Bentley" }; 
System.out.println(car.length); 

あなたは空の配列を初期化する必要がある場合は、以下を使用することができます。

String car[] = new String[] { }; // or simply String car[] = { }; 
System.out.println(car.length); 

あなたが必要な場合特定のサイズで初期化するには、次のように指定します。

String car[] = new String[3]; // initialize a String[] with length 3 
System.out.println(car.length); // 3 
car[0] = "BMW"; 
System.out.println(car.length); // 3 
あなたはそれに要素を追加する場合は210

しかし、私は、あなたの代わりにListを使用することをお勧めします:

List<String> cars = new ArrayList<String>(); 
System.out.println(cars.size()); // 0 
cars.add("BMW"); 
System.out.println(cars.size()); // 1 
+1

+1はリストを提案するためのものであり、これは配列よりも動作するほうがより適切な*インタフェース*です。 –

+2

あなたの最初のステートメントは "車は初期化されていないので、長さはありません。その値はnullです"というのは間違っています。 carは初期化されていないので、コードはコンパイルされません。潜在的に初期化されていない変数を参照するのは、コンパイル時エラーです。 – jarnbjo

+0

あなたが正しいです、javacは本当にそのエラーをスローします。私はそれを説明するために私の答えを編集しました。 –

4

さて、この場合にはcar変数は、それをデリファレンス、nullになります(あなたがそうであるようにcar.lengthにアクセスするとNullPointerExceptionがスローされます)。一部の値は間違いなくそれに割り当てられるまで

実際には、あなたはすべてのでその変数にアクセスすることはできません - それ以外の場合は、コンパイラは、「変数の車は初期化されていない可能性があります」という文句を言うでしょう。

あなたはここで何をしようとしていますか(正確にはあなたが探している「解決策」がわかりません)。

+0

これはダイナミックWebプロジェクトの一部として提供されています。ここでは、値が配列に格納されるかどうかはわかりません!!そして、配列が何かを持っているかどうかをチェックしたいのですが... –

2
String car []; 

は、String-sの配列への参照です。そこに配列がないので長さを見ることはできません!

0

私はあなたがこれは動作しません。この

String[] car = new String[10]; 
int size = car.length; 
+0

wazzy:配列のサイズが手前で分かっていないのか? –

+1

配列があなたの最良の選択肢ではないかもしれません。 @ジョアオが推奨するようにリストを見てください。 –

2

を探していると思います。最初に配列を初期化する必要があります。今のところ、nullを指すString []参照のみがあります。

長さメンバを読み取ろうとすると、実際にはnull.lengthとなり、NullPointerExceptionが発生します。

1

まだcarを初期化していないので、JVM(Java Virtual Machine)に存在しないため、最初に初期化する必要があります。例えば

car = new String{"Porsche","Lamborghini"}; 

今、あなたのコードは正常に実行されます。

INPUT:

String car []; 
car = new String{"Porsche","Lamborghini"}; 
System.out.println(car.length); 

OUTPUT:上記のすべての答えとして

1

それはNullPointerExceptionがスローされます示唆しています。

いくつかの値で初期化してから、lengthプロパティを正しく使用してください。例:

配列 'str'が定義され、長さも定義された値になります。

0

はJavaでは、我々は

String []car; 
String car[]; 

私たちは、new演算子を使用して配列を作成すると、そのタイプを指定することにより、アレイ(。例えば自動車)の文字列を宣言: -

String []car=new String[]; 
String car[]=new String[]; 

これは割り当て参照、文字列の配列へ、車へ。 また、それを初期化することによって、配列を作成することができます -

String []car={"Sedan","SUV","Hatchback","Convertible"}; 

あなたは、配列を初期化していないと、あなたがそれにアクセスしようとしている、にNullPointerExceptionがスローされているので。

関連する問題