Duvida com Aplicação

3 respostas
R

oi turma. mais uma vez estou aqui para pedir ajuda :)
eu estou desenvolvendo uma aplicação simples, mas estou com problemas na hora q demonstra o resultado. eu preciso q ele mostre um valor monetário só q exibe valor errado... o usuario digita o numero do produto e no final ele calcula e mostra o resultado total da venda.

// Aplicação para calcular o total de produtos vendidos

// Importação de pacotes do núcleo Java.
import java.text.NumberFormat;
import java.util.Locale;

// Importa pacote de extensão Java.
import javax.swing.JOptionPane;

public class Exer5_12 {
	
	// Método main inicia a execução da aplicação.
	public static void main ( String args []) {
		
		// Declaração das variáveis necessárias na aplicação.
		int numeroProduto;
		double total = 0.00, produto = 0.00;
		String valor;
		
		// Cria o DecimalFormat para formatar números em ponto flutuante
		// com dois dígitos a direita do ponto decimal.
		
		NumberFormat moneyFormat = NumberFormat.getCurrencyInstance ( Locale.US );
		
		// Solicita entrada do usuário na caixa de diálogo.  	
    	valor = JOptionPane.showInputDialog ("Digite o número do produto\nou 0 para terminar a aplicação:", "Entrada do usuário");
    	numeroProduto = Integer.parseInt ( valor );
		
        while ( numeroProduto != 0 ) {
        	
       	    //Solicita entrada do usuário na caixa de diálogo.  	
         	valor = JOptionPane.showInputDialog ("Digite o número do produto\nou 0 para terminar a aplicação:", "Entrada do usuário");
         	numeroProduto = Integer.parseInt ( valor );
        	        	
        	// Determina o valor do produto com base na escolha do usuário.
        	switch ( numeroProduto ) {
        
        	 case 1: produto = 2.98;
        	 break;
        	 case 2: produto = 4.50;
        	 break;
        	 case 3: produto = 9.98;
        	 break;
        	 case 4: produto = 4.49;
        	 break;
        	 case 5: produto = 6.87;
        	 break;
        	 default: if ( numeroProduto > 5 ) {
        	 	
        	 	JOptionPane.showMessageDialog ( null, "O número digitado não é valido.", "Erro", JOptionPane.INFORMATION_MESSAGE);
        	 	
        	 } // Fim da estrtura if.
        	 
        	} // Fim da estrutura switch.       	
        	 
        	 total = total + produto;     
        	 moneyFormat.format (total); 
        	
        } // Fim da estrutura while.
        
        // Exibe o resultado
        JOptionPane.showMessageDialog ( null, "O valor total dos produtos vendidos foram: " +total, "Resultado Final", JOptionPane.INFORMATION_MESSAGE);
        
        System.exit ( 0 );
			
	} // Fim do método main.
	
} // Fim da classe Exer5_12.

não sei o q pode estar acontecendo talvez seja algum erro de lógica.

3 Respostas

R

Dei uma pequena alterada no seu programa e creio que o problema foi resolvido...

Você estava pegando o valor do produto duas vezes, uma antes do while e uma depois, só que isso bagunçava bastante as contas pois uma ia zerada e depois ele duplicava, ah o que importa é que era bug... hehehehe

// Aplicação para calcular o total de produtos vendidos

// Importação de pacotes do núcleo Java.
import java.text.NumberFormat;
import java.util.Locale;

// Importa pacote de extensão Java.
import javax.swing.JOptionPane;

public class Exer5_12 {
   
   public static void main ( String args []) {
      int numeroProduto = 0;
      double total = 0.00, produto = 0.00;
      String valor;
      NumberFormat moneyFormat = NumberFormat.getCurrencyInstance ( Locale.US );
      while ( numeroProduto >= 0 ) {
            valor = JOptionPane.showInputDialog ("Digite o número do produto\nou 0 para terminar a aplicação:", "Entrada do usuário");
            numeroProduto = Integer.parseInt ( valor );
            switch ( numeroProduto ) {
            case 1: 
            	produto = 2.98;
            	total = total + produto;
            	break;
            case 2: 
            	produto = 4.50;
            	total = total + produto;
            	break;
            case 3: 
            	produto = 9.98;
            	total = total + produto;
            	break;
            case 4: 
            	produto = 4.49;
            	total = total + produto;
            	break;
            case 5: 
            	produto = 6.87;
            	total = total + produto;
            	break;
						case 0:   
							moneyFormat.format (total);          	
              JOptionPane.showMessageDialog ( null, "O valor total dos produtos vendidos foram: " +total, "Resultado Final", JOptionPane.INFORMATION_MESSAGE);
        			System.exit ( 0 );	
            default: 
            	JOptionPane.showMessageDialog ( null, "O número digitado não é valido.", "Erro", JOptionPane.INFORMATION_MESSAGE);
           }
        }
   }
}

Dessa maneira ficou melhor porque você só formata uma vez a soma, além do while não fazer uma verificação a mais caso seja zero.

M

Fala Rojas

Tb mudei seu código de uma meneira diferente, mas o erro estava na verificação do 0 quando o usuario digitava 0 o programa mesmo assim entrava no switch logo passei a entrada de dados para depois do swirtch

Da uma olhada ai:

/ Aplicação para calcular o total de produtos vendidos 

// Importação de pacotes do núcleo Java. 
import java.text.NumberFormat; 
import java.util.Locale; 

// Importa pacote de extensão Java. 
import javax.swing.JOptionPane; 

public class Exer5_12 { 
    
   // Método main inicia a execução da aplicação. 
   public static void main ( String args []) { 
       
      // Declaração das variáveis necessárias na aplicação. 
      int numeroProduto =6 ; 
      double total = 0, produto = 0; 
      String valor,valorTotal; 
       
      // Cria o DecimalFormat para formatar números em ponto flutuante 
      // com dois dígitos a direita do ponto decimal. 
       
      NumberFormat moneyFormat = NumberFormat.getCurrencyInstance ( Locale.US ); 
       
      // Solicita entrada do usuário na caixa de diálogo.      
       valor = JOptionPane.showInputDialog ("Digite o número do produto\nou 0 para terminar a aplicação:", "Entrada do usuário"); 
       numeroProduto = Integer.parseInt ( valor ); 
       
        while ( numeroProduto != 0 ) { 
            
              //Solicita entrada do usuário na caixa de diálogo.      
             
            System.out.println(numeroProduto);           
           // Determina o valor do produto com base na escolha do usuário. 
           switch ( numeroProduto ) { 
        
            case 1: produto = 2.98; 
            break; 
            case 2: produto = 4.50; 
            break; 
            case 3: produto = 9.98; 
            break; 
            case 4: produto = 4.49; 
            break; 
            case 5: produto = 6.87; 
            break; 
            default: if ( numeroProduto > 5 ) { 
                
               JOptionPane.showMessageDialog ( null, "O número digitado não é valido.", "Erro", JOptionPane.INFORMATION_MESSAGE); 
                
            } // Fim da estrtura if. 
            
           } // Fim da estrutura switch.           
            
            total =(double) total + produto;
            System.out.println(total);
            valor = JOptionPane.showInputDialog ("Digite o número do produto\nou 0 para terminar a aplicação:", "Entrada do usuário"); 
            numeroProduto = Integer.parseInt ( valor );
             
            
        } // Fim da estrutura while. 
        
        // Exibe o resultado
        valorTotal = moneyFormat.format (total);
        System.out.println(valorTotal); 
        JOptionPane.showMessageDialog ( null, "O valor total dos produtos vendidos foram: " +valorTotal, "Resultado Final", JOptionPane.INFORMATION_MESSAGE); 
        
        System.exit ( 0 ); 
          
   } // Fim do método main. 
    
} // Fim da classe Exer5_12.

Um abraço

Até mais

R

queria agradecer pela ajuda de vcs 2… funcionou certinho as duas formas e agora entendi onde tava errando. valeu mesmo…

Criado 11 de julho de 2005
Ultima resposta 11 de jul. de 2005
Respostas 3
Participantes 3