2013-02-13 13 views
6

Próbowałem poniżej, ale Eclipse zgłasza ten błąd.Jak porównać znak, aby sprawdzić, czy jest on pusty?

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

Co znajduje się w poprawny sposób sprawdzania, czy dana postać jest null?

+1

"char" jest prymitywny. 'null' jest zarezerwowane dla niezatwierdzonych odniesień. – madth3

+3

Czy 's' String? Jeśli tak, 's.charAt' zwróci typ pierwotny' char', a nie obiekt 'Character', więc nie może mieć wartości NULL. Domyślne wartości tablicy "char" to ''\ u0000'' lub prostsza'' \ 0''. Możesz nawet użyć 's.charAt (j) == 0' – Pshemo

+0

Czy próbujesz sprawdzić koniec łańcucha tak jak w C? – madth3

Odpowiedz

8

Przed wykonaniem jakiejkolwiek kontroli postaci sprawdź, czy Strings nie jest null. Znaki są zwracane przez String#charAt prymitywne char rodzaje i nigdy nie będzie null:

if (s != null) { 
    ... 

Jeśli próbujesz przetwarzać znaki z String jednym naraz, można użyć:

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

(przeciwieństwie C, NULL sprawdzanie terminatorów nie jest wykonywane w Javie.)

-2

Jeśli s jest łańcuchem i nie jest zerowy, to musisz spróbować g, aby porównać "spację" z char. Myślisz, że "przestrzeń" nie jest postacią, a przestrzeń jest po prostu null, ale prawda jest taka, że ​​przestrzeń jest postacią. Dlatego zamiast null użyj (która jest spacją) do porównania z charakterem.

+1

Poza tym pytanie jest 2,5 roku życia, uważam, że * bardzo * mało prawdopodobne, że szukają miejsca. –

0

Nie możemy sprawdzić, czy znak jest pusty, czy nie, ponieważ znak jest pierwotnym typem danych.

+0

Ta kontrola polega na tym, że znak jest spacją. 'Char' nie może mieć wartości' null', ponieważ 'char' jest typem pierwotnym. – Jesper

+0

Dzięki @Jesper masz rację –

5

Prawidłowy sposób sprawdzania char jest faktycznie opisany here.

Stwierdza:

go zmienić na: if(position[i][j] == 0) Każdy char można porównać z int. Domyślną wartością jest '\u0000', tj. 0 dla elementu tablicy char. I to jest dokładnie to, co rozumiesz przez pustą komórkę, przypuszczam.

3

Domyślną wartością dla prymitywów char jest 0, jako jej wartość ascii. możesz zaznaczyć znak char, jeśli jest pusty. na przykład:

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' nie może być pusty, ponieważ nie jest typem referencyjnym. To jest prymitywne. – xenteros

Powiązane problemy