Principiante em Java

3 respostas
Mahoutsukai

Oi pessoal, esta é a primeira vez que posto por aqui e gostaria da ajuda de vocês. Sou principiante em programação e estou estudando por conta própria pelo livro Java Como Programar quarta edição.
Estou tendo problemas em resolver um exercício do livro, que pede para criar um programa onde o usuário digita um código de um produto e a quantidade vendida na semana e o programa calcula o resultado final. O exercício pede que eu utilize a estrutura switch e um sentinela para finalizar a entrade de dados pelo usuário.
Escrevi o código abaixo, mas o resultado é sempre 0.0. Alguem poderia me dizer o que estou fazendo de errado? Dicas e concelhos adicionais são bem vindos. Muito obrigado.

// calcula as vendas da semana

import javax.swing.JOptionPane;
import javax.swing.JTextArea;


public class Vendas {
	
	public static void main ( String [] args )
	{
		String number,
		       text = "",
		       amount = "";
		int number_product, 
		    amount_product = 0;
		
		double value = 0,
		       results = 0;
		
		JTextArea outputArea = new JTextArea ( 17, 20 );
		
		number = 
			JOptionPane.showInputDialog( "Digite o numero do produto (1 a 5 ou -1 para sair)" );
		
		number_product = Integer.parseInt( number );
		
		while ( number_product != -1 ){
			
			amount = 
				JOptionPane.showInputDialog( "Digite a quantidade vendida do produto" );
			
			amount_product = Integer.parseInt ( amount );
			
			switch ( number_product ){
			
			case 1:
				value = 2.98;
				break;
				
			case 2:
				value = 4.50;
				break;
				
			case 3:
				value = 9.98;
				break;
				
			case 4:
				value = 4.49;
				break;
				
			case 5:
				value = 6.87;
				break;
				
				default:
					text = "Valor invalido";
					
				results += (value * (double) amount_product );
				
			
				
			}// fim de switch
			
			number = 
				JOptionPane.showInputDialog( "Digite o numero do produto (1 a 5 ou -1 para sair)" );
			
			number_product = Integer.parseInt( number );
			
		}// fim de while
		
		text = "Valor total de todos os produtos vendidos na semana passada foi de: " 
			+ results;
		
		outputArea.setText( text );
		
		JOptionPane.showMessageDialog( null, outputArea,
				"Resutado das Vendas da Semana", JOptionPane.INFORMATION_MESSAGE );
		
		System.exit( 0 );
		
		
	}// fim do metodo main

}

3 Respostas

E

Sua chave para fechar o switch está no lugar errado. Ela deveria estar assim:

case 5:
 				value = 6.87;
 				break;
 				
 			default:
 				text = "Valor invalido";
 				break;
 			} // fim de switch 
 			results += (value * (double) amount_product );

OK?

Mahoutsukai

Que burrice a minha… valeu.
Muito obrigado.

T

O tipo de erro que você cometeu é um dos mais chatos para debugar.
Para consertá-lo, só com um pouco de atenção e lógica, que são coisas que se aprendem com o tempo.
Não fique triste; isso ainda vai ocorrer com você várias vezes - e isso não é uma praga, mas uma constatação.
Se eu escrevo um programa sem um bug, acho que fiz alguma coisa errada - talvez tenha lido errado a especificação :stuck_out_tongue:

Criado 5 de julho de 2007
Ultima resposta 5 de jul. de 2007
Respostas 3
Participantes 3