Erro simples no switch

8 respostas
ramilson.silva

Galera, estou fazendo uma classe apenas para aprimorar um pouco o que estava aprendendo no curso que fiz.
Mas estou tentando converter para double a variável media, mas não consigo, fica com erro.
estou colocando o código que fiz para aqueles que puderem me dar uma dica.
desde já agradeço à todos.

import javax.swing.JOptionPane;

public class EntradaDadosMediaJoptinPane {
	public static void main(String[] args) {

		double nota1 = 0, nota2 = 0, media = 0;

		nota1 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a 1ª nota.: "));

		if (nota1 >= 0 && nota1 < 11) 
		{
			nota2 = Double.parseDouble(JOptionPane.showInputDialog("Digite a 2ª nota.: "));

			if (nota2 > 0 && nota2 < 11) 
			{
				media = (nota1 + nota2) / 2;

				JOptionPane.showMessageDialog(null, "A sua média foi: " + media);
			} 
			else
			{
				JOptionPane.showMessageDialog(null, "2ª Nota Inválida.");
			}
		} 
		else 
		{
			JOptionPane.showMessageDialog(null,"1ª Nota Inválida, sua média ficará sem média");
		}

		//tentei converter mas não funcionou.
		double media = Double.parseDouble(JOptionPane.showMessageDialog(null,"Será que vc passou?"));
		
		switch (media) {//erro está aqui...
		case 0 - 4:
			JOptionPane.showMessageDialog(null, "Reprovado.");
			break;
		case 5 - 6:
			JOptionPane.showMessageDialog(null, "Aprovado no sufoco.");
			break;
		case 7 - 9:
			JOptionPane.showMessageDialog(null, "Aprovado.");
			break;
		case 10:
			JOptionPane
					.showMessageDialog(null,
							"Parabéns, você foi um sucesso.\nContinue assim que você terá muito sucesso!!!");
			break;
		default:
			JOptionPane.showMessageDialog(null, "Média Inválida.");
			break;
		}

	}
}

8 Respostas

dfsilva86

Você está declarando novamente uma variável que já existe ( media )

E você está tentando colocar o que na variável média? pois você está emitindo uma mensagem e não esperando um valor…a 2ª linha vai falhar sempre…é ai onde está o erro e não no switch!

double nota1 = 0, nota2 = 0, media = 0; double media = Double.parseDouble(JOptionPane.showMessageDialog(null,"Será que vc passou?"));

ramilson.silva

na variavel media esta recebendo nota1 e nota2 dividindo por 2.

mas o problema esta dando no switch quando declaro dessa forma abaixo.

switch (media) {//erro está aqui... case 0 - 4: JOptionPane.showMessageDialog(null, "Reprovado."); break; case 5 - 6: JOptionPane.showMessageDialog(null, "Aprovado no sufoco."); break; case 7 - 9: JOptionPane.showMessageDialog(null, "Aprovado."); break; case 10: JOptionPane .showMessageDialog(null, "Parabéns, você foi um sucesso.\nContinue assim que você terá muito sucesso!!!"); break; default: JOptionPane.showMessageDialog(null, "Média Inválida."); break; }

hodrigohamalho

Kra você ta duplicando a variável media,
e .showMessageDialog não retorna nada, acho que no caso você está querendo usar uma showInputDialog

dfsilva86

O erro não está no switch.

Está na linha 32. Você não pode fazer isso

double media = Double.parseDouble(JOptionPane.showMessageDialog(null,"Será que vc passou?"));

e um detalhe que eu vi no seu switch

switch (media) { case 0 - 4: //seu aluno NUNCA vai ser reprovado, como você vai tirar 4 de 0 ???????? JOptionPane.showMessageDialog(null, "Reprovado."); break; case 5 - 6: //seu aluno NUNCA vai ser aprovado no sufoco, ele nunca vai ter uma nota -1...só se for mto burro e //mesmo assim deveria ser reprovado né.... JOptionPane.showMessageDialog(null, "Aprovado no sufoco."); break; case 7 - 9: //seu aluno NUNCA vai ser aprovado, com nota igual a 2 ele deve ser reprovado... JOptionPane.showMessageDialog(null, "Aprovado."); break; case 10: JOptionPane .showMessageDialog(null, "Parabéns, você foi um sucesso.\nContinue assim que você terá muito sucesso!!!"); break; default: JOptionPane.showMessageDialog(null, "Média Inválida."); break; }
Reveja seus cálculos…eu acho que você queria algo entre um valor e outro…desconheço como fazer se alguém souber posta ai…

hodrigohamalho

pra esse caso
ou você usaria algo do tipo:

case 0:
case 1:
case 2:
case 3:
case 4: [comando] 
break;

apesar de achar mais prático um if ai.
e como dito acima a linha

double media = Double.parseDouble(JOptionPane.showMessageDialog(null,"Será que vc passou?"));

showMessageDialog tem retorn void, poque só mostra mensagem na tela, pra isso ficar correto, deveria mudar essa variável que está duplicada
e por um showInputDialog:

double media2 = Double.parseDouble(JOptionPane.showInputDialog(null,"Será que vc passou?"));
ramilson.silva

Vlw pessoal, vou usar if no lugar do switch.

obrigado pelas dicas.
é que estou fazendo um calculo de média e comecei a colocar mais informações, e pensei que o switch ficaria legal, mas imagino que o if resolve sem problemas.

abraço a todos, mas se tiver alguem que conseguiu descobrir a minha cagada no switch e quiser postar aqui eu agradeço.

vlw.

B

Doubles não podem ser usados em switches, somente byte, short, char, int, suas classes wrapper e enums

ramilson.silva

Vlw Bruno pela dica, então provavelmente esse foi a merda do erro, mas consegui fazer com If.

um grande abraço.

Criado 28 de março de 2009
Ultima resposta 28 de mar. de 2009
Respostas 8
Participantes 4