Não se diz “laço do if” mas “bloco do if”.
Sobre sua dúvida, impossível saber porque não cai no if. Além de muitos campos, não sabemos o contéudo deles.
O seu código não valida algo como " " entendeu?
Use isso:
if(string != null && string.trim().isEmpty())
Caso não queira permitir entrada de valores em branco.
Veja se nenhum campo é nulo, null é diferente de “”.
Cara, esse erro todo mundo que está iniciando cai nele…
1º String não são tipos primitivos e sim objetos;
2º Objetos não são comparados com == a menos que você queira saber se ambos apontam para o mesmo endereço de memória;
3º Para comparar Objetos, usamos o método que é herdado da classe mãe de todas as classes (Object) chamado equals();
Para se usar o equals() podemos sobrescrevê-lo para ter um comportamento adequado às nossas necessidades, ou podemos simplesmente usar o Default que no caso da classe String retorna o próprio valor da mesma.
Código retirado da classe String do pacote java.lang JDK6_u22
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
Tudo isso pra dizer que nesse caso você deve trocar o == pelo .equals("")
é nessas horas que a sobrecarga de operadores do C++ se torna útil
Como não temos isso em Java… o jeito é usar o que API fornece. Usar o equals citado pelo adriano_si disse ou o isEmpty() citado pelo nel.
Mas para o teste que está sendo feito, acho mais adequado o isEmpty.