Poderiam me dar uma luz ? Quando criei a classe abaixo utilizando o Scanner consegui rodar normalmente. Agora estou tentando utilizar o JOptionPane mas ela não está armazenando os valores digitados pelo usuário, só calcula o 1º valor inserido. Alguém poderia me dizer onde estou errando ?
Abs,
Paulo
/** 7.10 - Utilize um array multidimensional para resolver o seguinte problema: Uma empresa paga seu pessoal * de vendas por comissão. O pessoal recebe $ 200 por semana mais 9% de suas vendas brutas durante essa semana. * Por exemplo, um vendedor que vende $ 5.000 brutos em uma semana recebe $ 200 mais 9% de $ 5.000 ou um total * de $ 650. */importjavax.swing.*;publicclassComissao{StringnomeVendedor[]=newString[3];doublevalorVendido[]=newdouble[3];doublefixoSemanal=200.00;doublepercComissao=0.09;inti=0;publicvoidinserir(){for(inti=0;i<nomeVendedor.length;i++){nomeVendedor[i]=JOptionPane.showInputDialog(null,"Digite o nome do vendedor ");valorVendido[i]=Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor vendido na semana "));}Stringoutput="Vendedor\tTotal Vendido\tComissao\n";doubletotReceber=fixoSemanal+(valorVendido[i]*percComissao);for(inti=0;i<nomeVendedor.length;i++)output+=nomeVendedor[i]+"\t"+valorVendido[i]+"\t"+totReceber+"\n";JTextAreaoutputArea=newJTextArea();outputArea.setText(output);JOptionPane.showMessageDialog(null,outputArea,"Demonstrativo de comissao",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}}
vc declarou a variavel int i = 0 e depois nao incrementou ela para pegar as outras posiçoes do array.
Paulo_Mour
Mas eu a incrementei no laço for…
francis.junio
publicclassValoresVendedor{publicstaticclassVendedor{privateStringnome;privateDoublevalorVendido;privateDoublecomissao;publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicDoublegetValorVendido(){returnvalorVendido;}publicvoidsetValorVendido(DoublevalorVendido){this.valorVendido=valorVendido;}publicDoublegetComissao(){returncomissao;}publicvoidsetComissao(Doublecomissao){this.comissao=comissao;}}publicstaticvoidmain(String[]args){Vendedorvendedor;VendedornomeVendedor[]=newVendedor[3];//double valorVendido[] = new double[3];doublefixoSemanal=200.00;doublepercComissao=0.09;for(inti=0;i<nomeVendedor.length;i++){Stringnome=JOptionPane.showInputDialog(null,"Digite o nome do vendedor ");DoublevalorVendido=Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor vendido na semana "));Doublecomissao=fixoSemanal+(valorVendido+percComissao);vendedor=newVendedor();vendedor.setNome(nome);vendedor.setValorVendido(valorVendido);vendedor.setComissao(comissao);nomeVendedor[i]=vendedor;}Stringoutput="Vendedor\tTotal Vendido\tComissao\n";for(inti=0;i<nomeVendedor.length;i++)output+=nomeVendedor[i].nome+"\t"+nomeVendedor[i].valorVendido+"\t"+nomeVendedor[i].comissao+"\n";JTextAreaoutputArea=newJTextArea();outputArea.setText(output);JOptionPane.showMessageDialog(null,outputArea,"Demonstrativo de comissao",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}}
Pode rodar essa classe ai que vai dar certo.
Paulo_Mour
Francis, agradeço muitissimo a sua colaboração pois lendo diversos códigos eu consigo entender(com certeza lerei o seu código). Mas a minha dúvida agora é aonde está o erro no código que eu criei. Você informou que eu declarei i mas não incrementei e pelo pouco que sei a variável foi incrementada no laço for. Quando utilizei a classe Scanner ele rodou como eu queria.
francis.junio
Paulo…
Eu peguei o seu codigo e debuguei ele aki para ver oq tava de errado…
essa linha esta fora de qualquer for, ou seja, qualquer laço para poder incrementa-la.
Entao, vc vai pegar somente uma vez o totReceber do vendedor que esta na posiçao 0 do array.
Foi oq eu falei… A variavel i dessa linha nao esta sendo incrementada e a aplicaçao so passa nessa linha uma vez.
francis.junio
Seu metodo deve ficar assim
publicvoidinserir(){for(inti=0;i<nomeVendedor.length;i++){nomeVendedor[i]=JOptionPane.showInputDialog(null,"Digite o nome do vendedor ");valorVendido[i]=Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor vendido na semana "));}Stringoutput="Vendedor\tTotal Vendido\tComissao\n";doubletotReceber=0D;// = fixoSemanal + (valorVendido[i] * percComissao); for(inti=0;i<nomeVendedor.length;i++){totReceber=fixoSemanal+(valorVendido[i]*percComissao);output+=nomeVendedor[i]+"\t"+valorVendido[i]+"\t"+totReceber+"\n";}JTextAreaoutputArea=newJTextArea();outputArea.setText(output);JOptionPane.showMessageDialog(null,outputArea,"Demonstrativo de comissao",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}
Paulo_Mour
Coloquei a linha dentro do laço e mesmo assim não rodou.
francis.junio
cara, vc tem certeza que colocou as duas linhas dentro do for?
como vc adicionou duas linhas dentro do laço, vc precisa colocar as chaves para abrir e fechar o laço… { and }…
se isso nao resolver, posta seu codigo ai de novo para analisarmos…
at+
Paulo_Mour
Segue o código:
importjavax.swing.*;publicclassComissao{ScannerentradaNome=newScanner(System.in);ScannerentradaValor=newScanner(System.in);StringnomeVendedor[]=newString[3];doublevalorVendido[]=newdouble[3];doublefixoSemanal=200.00;doublepercComissao=0.09;inti=0;doubletotReceber=0.0;publicvoidinserir(){for(i=0;i<nomeVendedor.length;i++){nomeVendedor[i]=JOptionPane.showInputDialog(null,"Digite o nome do vendedor ");valorVendido[i]=Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor vendido na semana "));}Stringoutput="Vendedor\tTotal Vendido\tComissao\n";for(i=0;i<nomeVendedor.length;i++){totReceber=fixoSemanal+(valorVendido[i]*percComissao);output+=nomeVendedor[i]+"\t"+valorVendido[i]+"\t"+totReceber+"\n";JTextAreaoutputArea=newJTextArea();outputArea.setText(output);JOptionPane.showMessageDialog(null,outputArea,"Demonstrativo de comissao",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}}}