Armazenando com JOptionPane[resolvido]

11 respostas
Paulo_Mour

Bom dia,

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. 
*/
 
import javax.swing.*;

public class Comissao
{
	
	String nomeVendedor[] = new String[3];
	double valorVendido[] = new double[3];
	
	double fixoSemanal = 200.00;
	double percComissao = 0.09;
	
	int i = 0;

	public void inserir()
	{		
		for(int 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 "));
			
		}
		
		String output = "Vendedor\tTotal Vendido\tComissao\n";

		double totReceber = fixoSemanal + (valorVendido[i] * percComissao);
		for(int i = 0 ; i < nomeVendedor.length ; i++)

			output += nomeVendedor[i] + "\t" + valorVendido[i] + "\t" + totReceber + "\n";
		
		JTextArea outputArea = new JTextArea();
		outputArea.setText( output );
		
		JOptionPane.showMessageDialog(null, outputArea, "Demonstrativo de comissao",
			JOptionPane.INFORMATION_MESSAGE);
		
		System.exit(0);

		
	}
	
	
}

11 Respostas

francis.junio

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
public class ValoresVendedor{
	
	public static class Vendedor{
		private String nome;
		private Double valorVendido;
		private Double comissao;
		public String getNome() {
			return nome;
		}
		public void setNome(String nome) {
			this.nome = nome;
		}
		public Double getValorVendido() {
			return valorVendido;
		}
		public void setValorVendido(Double valorVendido) {
			this.valorVendido = valorVendido;
		}
		public Double getComissao() {
			return comissao;
		}
		public void setComissao(Double comissao) {
			this.comissao = comissao;
		}
		
		
	}

	public static void main(String[] args) {
		
		Vendedor vendedor;		
		Vendedor nomeVendedor[] = new Vendedor[3];
		//double valorVendido[] = new double[3];

		double fixoSemanal = 200.00;
		double percComissao = 0.09;
		
		for (int i = 0; i < nomeVendedor.length; i++) {
			
			String nome = JOptionPane.showInputDialog(null,
					"Digite o nome do vendedor ");

			Double valorVendido = Double.parseDouble(JOptionPane.showInputDialog(
					null, "Digite o valor vendido na semana "));
			Double comissao = fixoSemanal + (valorVendido + percComissao);
			
			vendedor = new Vendedor();
			vendedor.setNome(nome);
			vendedor.setValorVendido(valorVendido);
			vendedor.setComissao(comissao);
			
			nomeVendedor[i] = vendedor;
		}

		String output = "Vendedor\tTotal Vendido\tComissao\n";
		
		for (int i = 0; i < nomeVendedor.length; i++)

			output += nomeVendedor[i].nome + "\t" + nomeVendedor[i].valorVendido + "\t"
					+ nomeVendedor[i].comissao + "\n";

		JTextArea outputArea = new JTextArea();
		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…

Nessa linha que esta o problema.

double totReceber = fixoSemanal + (valorVendido[i] * percComissao);

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

public void inserir()  
	    {         
	        for(int 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 "));  
	              
	        }  
	          
	        String output = "Vendedor\tTotal Vendido\tComissao\n";  
	  
	        double totReceber = 0D;// = fixoSemanal + (valorVendido[i] * percComissao);  
	        for(int i = 0 ; i < nomeVendedor.length ; i++){ 
	        	totReceber = fixoSemanal + (valorVendido[i] * percComissao);
	            output += nomeVendedor[i] + "\t" + valorVendido[i] + "\t" + totReceber + "\n";
	        }
	          
	        JTextArea outputArea = new JTextArea();  
	        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:

import javax.swing.*;

public class Comissao
{
	Scanner entradaNome = new Scanner(System.in);
	Scanner entradaValor = new Scanner(System.in);
	
	String nomeVendedor[] = new String[3];
	double valorVendido[] = new double[3];
	
	double fixoSemanal = 200.00;
	double percComissao = 0.09;
	int i = 0;
	
	double totReceber = 0.0;

	public void inserir()
	{		
		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 "));			
		}
		
		String output = "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";
		
		JTextArea outputArea = new JTextArea();
		outputArea.setText( output );
		
		JOptionPane.showMessageDialog(null, outputArea, "Demonstrativo de comissao",
			JOptionPane.INFORMATION_MESSAGE);
		
		System.exit(0);
		
		}
		
	}
	
}
public class ComissaoTeste
{
	public static void main(String args[])
	{
		Comissao executa = new Comissao();
		
		executa.inserir();
		
	}
	
}
francis.junio

Paulo…

Coloca dentro do ultimo for somente as duas primeiras linhas…
Ai o programa quando terminar o for, ele vai criar o JTextArea

for(i = 0 ; i < nomeVendedor.length ; i++)  
        {  
            totReceber = fixoSemanal + (valorVendido[i] * percComissao);  
                          
            output += nomeVendedor[i] + "\t" + valorVendido[i] + "\t" + totReceber + "\n";  
}
Paulo_Mour

Francis, rodou.

Muito obrigado pela ajuda e desculpe ter perturbado tanto.

Abs,

Paulo

Criado 17 de agosto de 2010
Ultima resposta 17 de ago. de 2010
Respostas 11
Participantes 2