BASICO - Dúvida com estrutura de repetição

2 respostas Resolvido
programaçãojava
B

Ola pessoal,

Dúvida básica, alguem consegue me explicar o por que o “do” não está rodando novamente mesmo quando a condição é satisfeita ?

public static void main(String args[]) {

String resp;
int pedido, quant, total=0;

		
do{				

	pedido = Integer.parseInt(JOptionPane.showInputDialog("Escolha seu pedido de acordo com o número:\r\n Tabela de Preços:\r\n 1 X-Bacon   - R$ 20.00 \r\n 2 X-Salada  - R$ 15.00 \r\n 3 X-Picanha - R$ 22.00\r\n 4 X-Tudo    - R$ 30.00 \r\n"));
	quant = Integer.parseInt(JOptionPane.showInputDialog("Quantidade: "));	
	resp = JOptionPane.showInputDialog("Digite S para continuar e N para encerrar o pedido");
	
	switch(pedido)
	{
		case(1):		
			total=total+(20*quant);
			break;
		case(2):
			total=total+(15*quant);
			break;
		case(3):
			total=total+(22*quant);
			break;
		case(4):
			total=total+(30*quant);
			break;

		default:
		
			JOptionPane.showMessageDialog(null,"Número não existente no cardápio");
		break;
	}
	
	
	} while(resp == "S" || resp == "s");

JOptionPane.showMessageDialog(null,"O valor total foi: "+ total);

}

2 Respostas

Lucas_Camara
Solucao aceita

Você não pode comparar Strings dessa forma. O correto é usar o método equals:

} while("S".equals(resp) || "s".equals("s"));

Ou pode usar o método equalsIgnoreCase:

} while("s".equalsIgnoreCase(resp));
B

ah, entendi
muito obrigada!

Criado 16 de abril de 2020
Ultima resposta 17 de abr. de 2020
Respostas 2
Participantes 2