2013-02-13 6 views
6

私は以下を試しましたが、Eclipseはこれに対してエラーを投げます。文字がNULLかどうかを比較するにはどうすればよいですか?

while((s.charAt(j)== null) 

文字がnullかどうかを確認する正しい方法は何ですか?

+1

'char'はプリミティブです。ヌルは、割り当てられていない参照のために予約されています。 – madth3

+3

's'文字列ですか?そうであれば 's.charAt'はプリミティブ型' char'を返し、オブジェクト 'Character'を返さないのでnullにすることはできません。 'char'配列のデフォルト値は' '\ u0000' 'またはより単純な '' \ 0''です。 's.charAt(j)== 0'を使用することもできます – Pshemo

+0

Cのように文字列の終わりをチェックしようとしていますか? – madth3

答えて

8

文字チェックを行う前に、Stringsnullでないことを確認してください。 String#charAtによって返された文字は、プリミティブchar種類あり、nullになることはありません:

if (s != null) { 
    ... 

一度にString 1から文字を処理しようとしている場合は、使用することができます。

for (char c: s.toCharArray()) { 
    // do stuff with char c 
} 

(とは異なり、 CNULL Javaでターミネータのチェックが行われていません)

-2

sが文字列でnullでない場合は、試しにする必要がありますg "space"とcharを比較します。あなたは "空間"は文字ではなく、空間はただnullだと思いますが、真実は空間が文字です。したがって、nullの代わりに、(スペース)を使用して文字と比較してください。

+1

質問は2.5歳ですが、スペースを探しているとは思えません。 –

0

文字がプリミティブデータ型であるため、文字がNULLかどうかを確認することはできません。

+0

これは文字がスペースであることをチェックします。 'char'はプリミティブ型なので' char'は 'null'にはなりません。 – Jesper

+0

ありがとう@Jesperあなたは正しいです –

5

charの正しい確認方法は、実際にはhereと記載されています。

それは述べている:

変更は、それがに:if(position[i][j] == 0)charintと比較することができます。 デフォルト値はの配列要素では'\u0000'、つまり0です。 それはまさにあなたが空のセルを意味するものなのです。

3

charプリミティブのデフォルト値は、ascii値として0です。 nullの場合、charをチェックできます。例えば:

char ch[] = new char[20]; //here the whole array will be initialized with '\u0000' i.e. 0 
    if((int)ch[0]==0){ 
     System.out.println("char is null"); 
    } 
+0

'char'は参照型ではないためnullにできません。それはプリミティブです。 – xenteros

関連する問題