import java.util.Scanner;
import java.util.Locale;
import java.text.DecimalFormat;
public class Cafeteria_Pedidos {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("#0.00");
String[] nomes = {
"Café expresso",
"Cappuccino",
"Latte",
"Pão de queijo",
"Bolo do dia",
"Item personalizado"
};
double[] precos = {4.50, 8.00, 7.50, 5.00, 6.00};
System.out.println("=== Cardápio ===");
for (int i = 0; i < precos.length; i++) {
System.out.printf("%d - %s : R$ %s%n", i + 1, nomes[i], df.format(precos[i]));
}
System.out.printf("%d - %s (informe nome e preço)%n", precos.length + 1, nomes[precos.length]);
double total = 0.0;
int contador = 0;
System.out.println();
System.out.println("Digite o número do item para adicioná-lo ao pedido.");
System.out.println("Digite 0 para encerrar e prosseguir para o pagamento.");
while (true) {
System.out.print("Escolha (0 para encerrar): ");
String entrada = sc.nextLine().trim();
int escolha;
try {
escolha = Integer.parseInt(entrada);
} catch (NumberFormatException e) {
System.out.println("Entrada inválida. Digite um número válido.");
continue;
}
if (escolha == 0) {
break;
}
if (escolha < 1 || escolha > precos.length + 1) {
System.out.println("Opção fora do cardápio. Tente novamente.");
continue;
}
if (escolha == precos.length + 1) {
System.out.print("Nome do item personalizado: ");
String nomePersonalizado = sc.nextLine().trim();
double precoPersonalizado;
while (true) {
System.out.print("Preço do item R$ ");
String p = sc.nextLine().trim().replace(",", ".");
try {
precoPersonalizado = Double.parseDouble(p);
if (precoPersonalizado < 0) {
System.out.println("Preço não pode ser negativo.");
continue;
}
break;
} catch (NumberFormatException e) {
System.out.println("Preço inválido. Digite um número, exemplo 3.50");
}
}
total += precoPersonalizado;
contador++;
System.out.printf("Adicionado: %s - R$ %s%n", nomePersonalizado, df.format(precoPersonalizado));
} else {
int idx = escolha - 1;
double preco = precos[idx];
total += preco;
contador++;
System.out.printf("Adicionado: %s - R$ %s%n", nomes[idx], df.format(preco));
}
}
System.out.println();
if (contador == 0) {
System.out.println("Nenhum item foi adicionado. Encerrando sem cobrança.");
sc.close();
return;
}
boolean cadastrado = false;
while (true) {
System.out.print("Cliente é cadastrado? (s/n): ");
String resp = sc.nextLine().trim().toLowerCase();
if (resp.equals("s") || resp.equals("sim")) {
cadastrado = true;
break;
} else if (resp.equals("n") || resp.equals("nao") || resp.equals("não")) {
cadastrado = false;
break;
} else {
System.out.println("Responda com 's' para sim ou 'n' para não.");
}
}
double desconto = 0.0;
double totalFinal = total;
if (cadastrado) {
desconto = total * 0.10;
totalFinal = total - desconto;
}
System.out.println();
System.out.println("=== Resumo do Pedido ===");
System.out.printf("Quantidade de itens: %d%n", contador);
System.out.printf("Valor total sem desconto: R$ %s%n", df.format(total));
System.out.printf("Desconto aplicado: R$ %s%n", df.format(desconto));
System.out.printf("Valor a pagar: R$ %s%n", df.format(totalFinal));
sc.close();
}
}