eu fiz o código da seguinte forma fiz um swith com o código desejado, mas como vários códigos repetiam a mensagem eu no meio dele criei uma comparação falando há se de tanto a tanto && de tanto a tanto faça tal coisa. Mas não funciona. Cheguei a fazer outro programa meio parecido mas os if eu usava apenas fora do swith case.
codigo de ex:
[code]
/**
*
*/
package com.fiap.ex18;
import javax.swing.JOptionPane;
/**
@author PAULO
Escreva um programa que leia o código de um determinado produto e mostre a
sua classificação. Utilize a tabela abaixo como referência:
Código Classificação
1 Alimento não-perecível
2, 3 ou 4 Alimento perecível
5 ou 6 Vestuário
7 Higiene pessoal
8 até 15 Limpeza e utensílios domésticos
Qualquer outro código
Inválido
*/
public class Ex18 {
public static void main(String[] args) {
short codigo;
codigo = Short.parseShort(JOptionPane.showInputDialog("Digite o Código do Produto Desejado:"));
switch (codigo) {
case 1:
JOptionPane.showMessageDialog(null, "Alimento Não Perecivel");
break;
case 2:
JOptionPane.showMessageDialog(null, "Alimento Perecivel");
if (codigo > 2 && codigo <= 4){
JOptionPane.showMessageDialog(null, "Alimento Perecivel");
}
break;
case 5:
JOptionPane.showMessageDialog(null, "Vestuário");
break;
case 6:
JOptionPane.showMessageDialog(null, "Vestuário");
break;
case 7:
JOptionPane.showMessageDialog(null, "Higiene pessoal");
break;
case 8:
JOptionPane.showMessageDialog(null, "Limpesa e Utensílios Domésticos");
if (codigo > 8 && codigo <= 15){
JOptionPane.showMessageDialog(null, "Limpesa e Utencilios Domésticos");
}
break;
default:
break;
}
if (codigo < 1 && codigo > 15){
JOptionPane.showMessageDialog(null, "Código Inválido");
}
}
Se você já sabe que o codigo é 2 (caso contrário, não entraria no case 2: do seu switch), não adianta colocar um if perguntando se ele é > 2 e <= 4.
Se ele é 2, ele não é 3 ou 4.
Além disso, por favor, se for postar códigos, siga essas dicas:
Da maneira que vc esta tentando fazer não vai rolar acredito que pra você o mais aconselhável seria uma abordagem como segue o exemplo abaixo:
switch (codigo) {
case 1: case 5:
case 7: case 8:
case 10: case 12:
//Seu codigo
break;
case 6: case 9: case 11:
//Seu codigo
break;
case 2: case 3: case 4:
//Seu codigo
break;
default:
System.out.println("Código inválido");
break;
}
Você perde um pouco a legibilidade do seu código mas deve resolver.
Então sobre o erro ele não dá erro ele não cai na condição ele só fecha o programa.
outra alternativa foi eu tirar os if de dentro swith case e colocar so no final fora dele criando as condições ai ele funcionou. mas uma coisa engraçada foi que eu tinha que por um número a mais ou a menos.
ex:
if (codigo >= 3 && codigo <= 4){
JOptionPane.showMessageDialog(null, "Alimento Perecivel");
}else if (codigo < 1 && codigo > 15){
JOptionPane.showMessageDialog(null, "Código Inválido");
}else if (codigo >= 9 && codigo <= 15){
JOptionPane.showMessageDialog(null, "Limpesa e Utencilios Domésticos");
e mesmo assim no caso do código invalido ele não funciona mas no outros casos sim.
switch (codigo) {
case 1:
JOptionPane.showMessageDialog(null, "Alimento Não Perecivel");
break;
case 2:
case 3:
case 4:
JOptionPane.showMessageDialog(null, "Alimento Perecivel");
break;
case 5:
JOptionPane.showMessageDialog(null, "Vestuário");
break;
case 6:
JOptionPane.showMessageDialog(null, "Vestuário");
break;
case 7:
JOptionPane.showMessageDialog(null, "Higiene pessoal");
break;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
JOptionPane.showMessageDialog(null, "Limpesa e Utensílios Domésticos");
break;
default:
JOptionPane.showMessageDialog(null, "Código Inválido");
break;
}