Switch passando direto por case?

3 respostas
switchjavacasejoptionpanel
A

Estou iniciando os estudos em Java e fiz o seguinte codigo http://pastebin.com/e8MGJr9k, porem ao tentar jogar uma condição para que entre em programação Web o programa vai direto para o default (valor padrão), porque?

Código Completo:

import javax.swing.JOptionPane;
import java.util.Scanner;
public class SwitchCondicional
{
	public static void main(String[]args)
	{
		
		Scanner entrada = new Scanner(System.in);
		String  tecnologia;
		JOptionPane.showInputDialog(null,"Informe a tecnologia a ser usada: ");
		tecnologia = entrada.nextLine();
		switch(tecnologia){
			case "Java":
			case "C":
			case "C++":
				JOptionPane.showMessageDialog(null,"Linguagem de programacao !");
				break;
			case "Oracle":
			case "MySQL" :
			case "PostgreSQL":
				JOptionPane.showMessageDialog(null,"Banco de Dados !");
				break;
			case "PHP":
			case "JavaScript":
			case "HTML":
				JOptionPane.showMessageDialog(null,"Programacao Web !");
				break;
			default:
			JOptionPane.showMessageDialog(null,"Tecnologia desconhecida !");
		}
	}
}

3 Respostas

Dragoon

A falta de observação no código é um fator primordial, saber debugar e entender o que escreveu é também um fator muito importante:

Porque o seu código não funcionou?
R: Existe uma confusão entre:

Scanner entrada = new Scanner(System.in);

e

JOptionPane.showInputDialog(null,"Informe a tecnologia a ser usada: ");

Ou seja, você não estava recebe valor por isso caiu no valor padrão (default)

Então, eu defini por conta própria que você vai receber o valor pelo JOptionPane, sendo que o código ficará assim:

String  tecnologia; 
tecnologia = JOptionPane.showInputDialog(null,"Informe a tecnologia a ser usada: ");

Código completo:

String  tecnologia; 

tecnologia = JOptionPane.showInputDialog(null,"Informe a tecnologia a ser usada: ");

switch(tecnologia)
{
	case "Java":
	case "C":
	case "C++":
		   JOptionPane.showMessageDialog(null,"Linguagem de programacao !");
		break;
	case "Oracle":
	case "MySQL" :
	case "PostgreSQL":
		   JOptionPane.showMessageDialog(null,"Banco de Dados !");
		break;
	case "PHP":
	case "JavaScript":
	case "HTML":
		   JOptionPane.showMessageDialog(null,"Programacao Web !");
		break;
	default:
		   JOptionPane.showMessageDialog(null,"Tecnologia desconhecida !");
}

Um coisa também quando se usa o Scanner entrada você no final tem que tirar os espaços em branco se não ele não bate também por isso para resumir coloquei a outra solução

A

@Dragoon muito obrigado pela ajuda, vou rever melhor os conceitos e aplicações do Enantiopatia e Scanner.

Lendo o que você me falou, entendi que usei dois métodos de entrada de dados para a mesma variável e isso pode ter gerado confusão porque inseria os dados pelo JOptionPanel porem a variável tecnologia não estava recebendo a atribuição através do método.

Seria isso menso ??

Dragoon

Isso mesmo, você usou os dois tipos de coleta de dados e na hora de usar trocou aquele não estava fazendo nada! e também ou é um ou é o outro, nunca os dois.

Criado 26 de julho de 2016
Ultima resposta 27 de jul. de 2016
Respostas 3
Participantes 2