É melhor fazer assim (Java 6):
String sVerPalavra = "";
while(sVerPalavra.isEmpty()) {
System.out.print(" Digite a palavra: ");
try{
sVerPalavra = bfScan.readLine().trim();
} catch(IOException e) {
System.out.println("Houve Erro na entrada de dados");
}
}
O comando isEmpty() testa se a palavra é vazia. Já o comando trim() remove os espaços do início e do fim da linha.
Se você estiver no java 5 ou inferior, pode trocar o isEmpty() por
sVerPalavra.length() == 0
quitZAUMMM, quanto ao equals, sinto informar mas seu professor está errado. E por vários motivos:
-
compareTo(outroObjeto) == 0 está relacionado a comparação de 2 objetos em termos de grandeza. Dois objetos diferentes podem ter a mesma grandeza, e portanto, você obteria uma comparação errada (não é o caso para strings, mas é bom saber que compareTo() == 0 e equals podem vir a fazer coisas diferentes);
-
É mais fácil de ler e entender o equals do que o compareTo. Da mesma forma, é preferível o isEmpty() ao length() == 0 (e se vc vir a lógica dos dois, é idêntica, o isEmpty() simplesmente testa se o length() é igual a 0!)
O que é preferível, caso você queira também repudiar nulos, é colocar a constante (que nunca será nula) antes. Ou seja, ao invés de:
Faça:
Note que no primeiro caso, se objeto for nulo, o código lançará uma nullpointer exception, já que não poderá rodar o equals.
Já no segundo caso, o “” irá rodar o equals e retornará false, sem que haja um erro no seu código.
Finalmente, como eu já falei em outro post e volto a reforçar aqui, não é um bom hábito usar a notação húngara, ou seja, colocar o tipo de dado da variável abreviado na frente do nome da variável. Isso vai contra a nomenclatura padrão do Java e torna o código mais difícil de ler.