Problemas na hora de inserir string

4 respostas
B

Bom pessoal, pra quem não sabe, eu sou iniciante no Java, e to tendo um outro problema. A classe "Funcionarios" tem o "Demite" que vai esr especificado abaixo:

boolean demite(String decisao) {
			
			if(decisao=="S"){
				return false;				
			}
			else{
				return true;
			}

Simples assim

Agora tem a outra classe, que testa essa função, e tá assim:

System.out.println("Deseja demitir o empregado?(S/N)");
		String decisao= entrada.nextLine();
		if (empregado.demite(decisao)==false){
		System.out.println("Empregado mantido.");	
		}
		else{
		System.out.println("Você está demitido!!");	
		}

Porém, quando eu executo, acontece isso:

"Deseja demitir o empregado?(S/N)
Você está demitido!!"
(sendo que eu não digitei nada)

Qual é meu erro? Valeu!

4 Respostas

Mephy

Strings não usam o operador == por serem objetos, e não tipo primitivo (int, double, char, etc.)
como seu método é S/N, recomendo usar o tipo char, mas se quiser usar String, o que muda é o seguinte:

if (decisao.equals("S")) {

edit:
também tente usar o operador lógico NÃO invés de testes desnecessários:

if (! empregado.demite(decisao)) {
ViniGodoy

Por acaso você usa comandos que não sejam nextLine() no seu Scanner?

Pq outros comandos costumam a deixar lixo, e fazer o nextLine() parar de funcionar. Use apenas nextLine() ao ler dados do console

ViniGodoy

Também na linha de evitar ifs desnecessários, vc pode fazer:

boolean demite(String decisao) { return decisao.equalsIgnoreCase("S"); }

Como esse método retorna um boolean, você faz a função retornar o seu resultado.
O ignoreCase é só para não diferenciar entre maiúsculas e minúsculas.

B

Valeu pessoal, mas já encontrei o erro. Estava na leitura da string mesmo, e estava nextLine(), como o amigo disse. Porém, só funcionou quando eu puz next();. Aí funfou numa boa. Obrigado.

Criado 10 de abril de 2011
Ultima resposta 18 de abr. de 2011
Respostas 4
Participantes 3