Boa noite pessoal, estou com um problema que já rachei o cérebro pra resolver mas não estou conseguindo achar a solução.
Estou fazendo um trabalho em java onde eu devo simular o site do McDonalds, mas de forma beeeem básica, a estrutura tá toda certinha
e simples, mas não entendo porque os valores estão chegando zerados na classe Relatórios, vou postar os códigos das classes na ordem em que os
dados passam pelas classes. Me ajudem por favor, já revirei esse código fiz um monte de testes mas nada deu certo, os valores sempre saem
zerados na classe Relatórios.
Menu Principal
[code]package McDonalds;
import javax.swing.JOptionPane;
public class MenuPrincipal {
public static void main(String[] args) {
int opSand=0, opBebida=0, opAcomp=0;
Relatorios nota = new Relatorios();
do{
opSand = Integer.parseInt(JOptionPane.showInputDialog("Escolha a sua promoção\n"+
"1 - McLanche Feliz\n"+
"2 - BigMac\n"+
"3 - McFish\n"+
"4 - McJúnior\n"+
"5 - BigTasty\n"+
"6 - McSalada\n"+
"7 - CheddarMcMelt\n\n"+
"9 - Sair"));
if(((opSand>=1)&&(opSand<=7))||(opSand%1!=0)){
opBebida=Integer.parseInt(JOptionPane.showInputDialog("Escolha a bebida\n"+
"1 - Suco\n"+
"2 - Coca-Cola\n"+
"3 - Guaraná\n"+
"4 - Milk Shake"));
opAcomp=Integer.parseInt(JOptionPane.showInputDialog("Escolha o Acompanhamento\n"+
"1 - Batata Frita\n"+
"2 - Nugget\n"+
"3 - Cenourinhas\n"));
new Pedido(opSand,opBebida,opAcomp);
}else if(opSand==9){
nota.geraRelatorio();
}else{
JOptionPane.showMessageDialog(null, "Opção Inválida");
}
}while(opSand!=9);
}
}
[/code]
Classe Pai Abstrata (eu acho que é irrelevante ao problema)
[code]package McDonalds;
public abstract class Promocao {
public abstract void sanduiche(int sanduiche);
public abstract void bebida(int bebida);
public abstract void acompanhamento(int acompanhamento);
}
[/code]
Classe Pedido (serve para armazenar os pedidos em ArrayList)
package McDonalds;
import java.util.ArrayList;
public class Pedido extends Promocao {
ArrayList<Integer> ListaSanduiche = new ArrayList<Integer>();
ArrayList<Integer> ListaBebida = new ArrayList<Integer>();
ArrayList<Integer> ListaAcompanhamento = new ArrayList<Integer>();
//construtor
public Pedido(int sanduiche, int bebida, int acompanhamento){
sanduiche(sanduiche);
bebida(bebida);
acompanhamento(acompanhamento);
}
//métodos herdados
@Override
public void sanduiche(int sanduiche) {
// TODO Auto-generated method stub
this.ListaSanduiche.add(sanduiche);
}
@Override
public void bebida(int bebida) {
// TODO Auto-generated method stub
this.ListaBebida.add(bebida);
}
@Override
public void acompanhamento(int acompanhamento) {
// TODO Auto-generated method stub
this.ListaAcompanhamento.add(acompanhamento);
}
}
Tabela de Precos (é onde são setados os preços unitários de cada produto)
package McDonalds;
public class TabelaPrecos {
private double pMclanche, pBigmac, pMcfish,
pMcjunior, pBigtasty, pMcsalada, pCheddar;
private double pSuco, pCoca, pGuarana, pMilkshake;
private double pBatata, pNugget, pCenouras;
public double getpMclanche() {
return pMclanche;
}
public void setpMclanche(double pMclanche) {
this.pMclanche = 3.00;
}
public double getpBigmac() {
return pBigmac;
}
public void setpBigmac(double pBigmac) {
this.pBigmac = 5.00;
}
public double getpMcfish() {
return pMcfish;
}
public void setpMcfish(double pMcfish) {
this.pMcfish = 4.00;
}
public double getpMcjunior() {
return pMcjunior;
}
public void setpMcjunior(double pMcjunior) {
this.pMcjunior = 3.00;
}
public double getpBigtasty() {
return pBigtasty;
}
public void setpBigtasty(double pBigtasty) {
this.pBigtasty = 6.00;
}
public double getpMcsalada() {
return pMcsalada;
}
public void setpMcsalada(double pMcsalada) {
this.pMcsalada = 5.00;
}
public double getpCheddar() {
return pCheddar;
}
public void setpCheddar(double pCheddar) {
this.pCheddar = 4.00;
}
public double getpSuco() {
return pSuco;
}
public void setpSuco(double pSuco) {
this.pSuco = 2.50;
}
public double getpCoca() {
return pCoca;
}
public void setpCoca(double pCoca) {
this.pCoca = 3.00;
}
public double getpGuarana() {
return pGuarana;
}
public void setpGuarana(double pGuarana) {
this.pGuarana = 3.00;
}
public double getpMilkshake() {
return pMilkshake;
}
public void setpMilkshake(double pMilkshake) {
this.pMilkshake = 4.70;
}
public double getpBatata() {
return pBatata;
}
public void setpBatata(double pBatata) {
this.pBatata = 2.50;
}
public double getpNugget() {
return pNugget;
}
public void setpNugget(double pNugget) {
this.pNugget = 3.00;
}
public double getpCenouras() {
return pCenouras;
}
public void setpCenouras(double pCenouras) {
this.pCenouras = 2.00;
}
}[/code]
Cálculos (é onde são calculados os valores de venda dos produtos e as quantidades vendidas)
[code]package McDonalds;
public class Calculos{
//variáveis globais
int total;
int qMclanche = 0, qBigmac = 0, qMcfish = 0,
qMcjunior = 0, qBigtasty = 0, qMcsalada = 0, qCheddar = 0;
int qSuco = 0, qCoca = 0, qGuarana = 0, qMilkshake = 0;
int qBatata = 0, qNugget = 0, qCenouras = 0;
double pTotal;
double tMclanche = 0, tBigmac = 0, tMcfish = 0,
tMcjunior = 0, tBigtasty = 0, tMcsalada = 0, tCheddar = 0;
double tSuco = 0, tCoca = 0, tGuarana = 0, tMilkshake = 0;
double tBatata = 0, tNugget = 0, tCenouras = 0;
public void calcular(){
//variáveis locais
int sanduiche = 0, bebida = 0, acompanhamento = 0;
TabelaPrecos precos = new TabelaPrecos();
Pedido pedidos = new Pedido(sanduiche, bebida, acompanhamento);
for (int i=0; i<pedidos.ListaSanduiche.size(); i++) {
if (pedidos.ListaSanduiche.contains(1)){
qMclanche++;
}else if(pedidos.ListaSanduiche.contains(2)){
qBigmac++;
}else if(pedidos.ListaSanduiche.contains(3)){
qMcfish++;
}else if(pedidos.ListaSanduiche.contains(4)){
qMcjunior++;
}else if(pedidos.ListaSanduiche.contains(5)){
qBigtasty++;
}else if(pedidos.ListaSanduiche.contains(6)){
qMcsalada++;
}else{
qCheddar++;
}
if (pedidos.ListaBebida.contains(1)){
qSuco++;
}else if(pedidos.ListaBebida.contains(2)){
qCoca++;
}else if(pedidos.ListaBebida.contains(3)){
qGuarana++;
}else {
qMilkshake++;
}
if (pedidos.ListaAcompanhamento.contains(1)){
qBatata++;
}else if(pedidos.ListaAcompanhamento.contains(2)){
qNugget++;
}else {
qCenouras++;
}
}
//calculando total de produtos
this.total=qMclanche+qBigmac+qMcfish+qMcjunior+
qBigtasty+qMcsalada+qCheddar+qSuco+qCoca+
qGuarana+qMilkshake+qBatata+qNugget+qCenouras;
//calculando valor total de cada produto
this.tMclanche=qMclanche*precos.getpMclanche();
this.tBigmac=qBigmac*precos.getpBigmac();
this.tMcfish=qMcfish*precos.getpMcfish();
this.tMcjunior=qMcjunior*precos.getpMcjunior();
this.tBigtasty=qBigtasty*precos.getpBigtasty();
this.tMcsalada=qMcsalada*precos.getpMcsalada();
this.tCheddar=qCheddar*precos.getpCheddar();
this.tSuco=qSuco*precos.getpSuco();
this.tCoca=qCoca*precos.getpCoca();
this.tGuarana=qGuarana*precos.getpGuarana();
this.tMilkshake=qMilkshake*precos.getpMilkshake();
this.tBatata=qBatata*precos.getpBatata();
this.tNugget=qNugget*precos.getpNugget();
this.tCenouras=qCenouras*precos.getpCenouras();
//calculando valor total
this.pTotal= tMclanche+tBigmac+tMcfish+tMcjunior+
tBigtasty+tMcsalada+tCheddar+tSuco+tCoca+
tGuarana+tMilkshake+tBatata+tNugget+tCenouras;
}
}
Relatórios (é onde é gerado o relatório de vendas, ou seja, onde são exibidos os resultados)
[code]package McDonalds;
public class Relatorios {
public void geraRelatorio(){
Calculos calc = new Calculos();
TabelaPrecos p = new TabelaPrecos();
System.out.printf("Nota de Venda\n"+
"=============\n"+
"Qt. | Produtos | Preço un. R$ | Total R$"+
"\n%s McLanche Feliz %s %s"+
"\n%s Big Mac %s %s"+
"\n%s McFish %s %s"+
"\n%s McJunior %s %s"+
"\n%s BigTasty %s %s"+
"\n%s McSalada %s %s"+
"\n%s Cheddar McMelt %s %s"+
"\n%s Suco %s %s"+
"\n%s Coca-Cola %s %s"+
"\n%s Guaraná %s %s"+
"\n%s MilkShake %s %s"+
"\n%s Batata Frita %s %s"+
"\n%s Nugget %s %s"+
"\n%s Cenourinhas %s %s"+
"\n\n Total= %s TOTAL R$= %s",
calc.qMclanche,p.getpMclanche(),calc.tMclanche,
calc.qBigmac,p.getpBigmac(),calc.tBigmac,
calc.qMcfish,p.getpMcfish(),calc.tMcfish,
calc.qMcjunior,p.getpMcjunior(),calc.tMcjunior,
calc.qBigtasty,p.getpBigtasty(),calc.tBigtasty,
calc.qMcsalada,p.getpMcsalada(),calc.tMcsalada,
calc.qCheddar,p.getpCheddar(),calc.tCheddar,
calc.qSuco,p.getpSuco(),calc.tSuco,
calc.qCoca,p.getpCoca(),calc.tCoca,
calc.qGuarana,p.getpGuarana(),calc.tGuarana,
calc.qMilkshake,p.getpMilkshake(),calc.tMilkshake,
calc.qBatata,p.getpBatata(),calc.tBatata,
calc.qNugget,p.getpNugget(),calc.tNugget,
calc.qCenouras,p.getpCenouras(),calc.tCenouras,
calc.total,calc.pTotal);
}
}
[/code]
Legenda:
variáveis iniciadas com a letra "p" são variáveis de preço unitário.
variáveis iniciadas com a letra "t" são variáveis de preço total.
variáveis iniciadas com a letra "q" são variáveis de quantidade.