laço infinito

3 respostas
maiden

tenho as seguintes classes:

import java.util.Scanner;

public class Imc {

	double peso, altura, result;
	
	double calcularImc (double peso, double altura){
		
		double imc;
		return imc = peso / (altura*altura);
	}
	
	public void lerResultado (){
		 
		 Scanner ab = new Scanner(System.in);
		
		 System.out.println("Digite seu peso: ");
		 peso = ab.nextDouble();
		 System.out.println("Digite seu altura: ");
		 altura = ab.nextDouble();
		 
		 result = calcularImc(peso, altura);
		 
		 System.out.println("o imc é: " + result);
		 
	}
	
	public void resultado (){
		
		if(result < 17.0)
			System.out.println("Muito abaixo do peso ideal!");
		else if(result >= 17)
			System.out.println("Abaixo do peso ideal!");
		else if(result <= 18.49)
			System.out.println("Abaixo do peso ideal!");
		else if(result >= 18.5 )
			System.out.println("Peso ideal!");
		else if(result <= 24.99 )
			System.out.println("Peso ideal!");
		//falta mais ainda 
			
	}

}
import java.util.Scanner;

public class IFDemo {

	 public static void main(String args[]) {
	 
		String sair;
		 
		Imc imc = new Imc();
		Scanner ab = new Scanner(System.in);
		 
	    for(;;){
			 
			 imc.lerResultado();
			
			 //sair do laço
			 System.out.println("Digite s para finalizar o programa: ");
			 sair = ab.next();
				 
			 if(sair == "s") break;		
			
			 imc.resultado();
			
		}
	 }
}

Minha duvida é quando chega a parte do "if(sair == "s" ) break;" pelo que eu li no livro deveria sair do laço infinito do for( ;; ), exatamente quando o usuário digitasse "s", só quando digito o bendito "s" o laço continua, como faço para sair desse laço infinito?

se alguém poder me ajudar desde já agradeço.

3 Respostas

maiden

tentei colocar um rótolo pra forçar, mas também não funcionou

end: for(;;){
			 
			 imc.lerResultado();
			
			 //sair do laço
			 System.out.println("Digite s para finalizar o programa: ");
			 sair = ab.next();
				 
			 if(sair == "s") break end;		
			
			 imc.resultado();
			
		}
igor_ks

Para comparar valores de objetos, usa-se equals(). “==” compara as referências de objetos

maiden

entende no livro ele usa a classe read() aqui to usando uma String que é um objeto

Valeu!!

Criado 23 de abril de 2014
Ultima resposta 23 de abr. de 2014
Respostas 3
Participantes 2