Caixa registradora
Em sistemas de ponto de venda (PDV), a leitura de itens continua até que o operador indique o fim da compra. O laço while com um valor sentinela (como 'fim') é exatamente como se implementa essa lógica em software real de caixa, evitando processar dados inválidos. Dominar essa técnica permite criar loops que param sob condição explícita, essencial para menus interativos e entrada de dados até interrupção.
O PROBLEMA
Produtos e preços até 'fim'. Total, itens, mais caro.
EXEMPLO
3 itens, Total: R$49.50, Mais caro: carne
SOBRE O CONCEITO
O exercício usa um laço while que se repete enquanto o produto lido não for "fim". Para cada entrada, você deve: contar itens, acumular o total e verificar se o preço é maior que o atual mais caro. O erro comum é processar a string "fim" como se fosse um produto. Isso acontece quando se lê a linha com nextLine() e já tenta converter para double sem antes testar se é "fim". O correto é: ler o nome, testar com equals("fim") e, só se for diferente, prosseguir para ler o preço e atualizar os acumuladores. Se o teste for feito depois de ler o preço, "fim" será tratado como produto, gerando NumberFormatException ou lógica errada.
RESOLUÇÃO