[DUVIDA] Como criar um loop controlado por sentinela

2 respostas
luizaguerra
Estou resolvendo um exercício e criei o codigo abaixo:
/*Uma empresa que faz negócios de reembolso postal vende cinco produtos cujos 
preços de varejo são como se segue: Produto1 2,98; Produto2 4,50; Produto3 9,98, 
Produto4 4,49; Produto5 6,87. Escreva um aplicativo que leia o numero do produto 
e a quantidade vendida. Seu programa deve utilizar uma estrutura switch para determinar 
o preço do varejo de cada produto. Você deve calcular e exibir o valor de varejo total de 
todos os produtos vendidos. Utilize um loop controlado por sentinela para determinar 
quando o programa deve parar o loop e exibir os resultados finais.*/

package pkgExercicio4;
import java.util.*;

public class ReembolsoPostal {
	private int produto;
		
	public int definirProduto (){
		Scanner entrada = new Scanner(System.in);
		System.out.println("Digite o numero do produto vendido: ");
		produto = entrada.nextInt();
		
		return produto;
	}
	
	public double calcularTotal (int prod){
		prod = definirProduto();
		Scanner entrada = new Scanner(System.in);
		System.out.println("Digite a quantidade vendida: ");
		double total = entrada.nextDouble();
		
		switch (prod){
		case 1:
			total*=2.98;
			break;
		case 2:
			total*=4.50;
			break;
		case 3:
			total*=9.98;
			break;
		case 4:
			total*=4.49;
			break;
		case 5:
			total*=6.87;
		default:
			System.out.println("Não existe o produto informado.\n");
		}
		
		return total;
	}
	
	public int verificarEntrada (){
		Scanner entrada = new Scanner(System.in);
		System.out.println("Deseja inserir a venda de outro produto?\n\n0 - Não\n1 - Sim\n");
		
		int condicao = entrada.nextInt();
		
		return condicao;
	}
}

Acredito que esteja certo, porém, preciso criar um loop que requisite ao usuário a inserção de novos produtos e que só pare quando o usuário encerrar a introdução de dados.

Se alguém puder me ajudar a fazer ou me dar uma ideia...

2 Respostas

Poneis123

Luiza,

Esse loop controlado por sentinela acho que foi pra confundir viu rsrs. Pelo que vi no seu código o loop ficará em execução enquanto o usuário digitar 1 na pergunta “Deseja inserir a venda de outro produto?\n\n0 - Não\n1 - Sim\n”.

Sendo assim, basta agora que crie o método principal(main) chamando e tratando todos esses métodos seus criados, vou colocar em texto para que entenda e faça vc mesma.

public static void main(String[] args){ double totalGeral = 0; //essa variavel vai guardar o total de todos os produtos enqto o loop é executado do{ int produto = o retorno do método definirProduto totalGeral = totalGeral + calcularTotal(produto) //produto que foi retornado pelo metodo definirProduto }while(método verificarEntrada retornar 1) }

Creio que seja somente isso. Utilizei o laço do-while pois o seu método verificarEntrada imprime na tela um texto falando de OUTRO produto, como a primeira vez que passar não tem OUTRO produto, com o do-while ele irá executar a primeira vez sempre sem questionar, irá questionar da venda de outro produto apenas quando já efetuou realmente 1 venda.

Att,

G

sentinela pra mim é um watchDog. Serve basicamente pra diaparar uma ação quando alguma coisa que ele monitore aconteça.

Por exemplo, resetar um contador se um overflow acontecer. Mas em um exemplo assim acho que o que Poneis123 falou é o correto, deve ser so ver o que o usuario digitou e sair do processo.

De resto, tem que fazer o que Poneis123 falou, colocar uma variavel mais externa que vai guardar o total das vendas.

no final de cada operacao tu manda o usuario entrar com um inteiro e quando vc ler, se for 1 vc continua se for 0 vc dai, sei la, algo desse tipo. Se tiver mais alg dificuldade fala ai que a gnt resolve! hehehe =)

Criado 27 de abril de 2011
Ultima resposta 27 de abr. de 2011
Respostas 2
Participantes 3