Switch....case

21 respostas
niggazflavors

Boa Tarde, estou iniciando meus estudos em java e gostaria de tirar uma duvida…to escrevendo um programa para que o usuario entre com dois numeros, e o operador aritmetico.
Gostaria de saber oq tem de errado com o cógido:

package inicio;

import javax.swing.JOptionPane;

public class AulaCase {

public static void main (String args[]){

double num1, num2, conta;

String entrada, saida,operador;

entrada = JOptionPane.showInputDialog(Digite o 1º numero:);

num1 = Double.parseDouble(entrada);

entrada = JOptionPane.showInputDialog(Digite o 2º numero:);

num2 = Double.parseDouble(entrada);

operador = JOptionPane.showInputDialog(Qual a operação?”);

switch (ope[size=18][/size]rador){

case +;

conta = num1 + num2;

break;
}
}

}

Obrigado

21 Respostas

lgi2020

Switch não aceita Strings.

Só aceita inteiros ou chars (que são inteiros).

julianoeustaquio

Niggaz Flavors o comando “switch” só aceita números!

Kassiane_Pretti

Ele só aceita int e char.
Quando vc fala em numeros vc generaliza, assim abrange tb ao float, double… que não são aceitos pelo switch…

lgi2020

Ele só aceita int e char.
Quando vc fala em numeros vc generaliza, assim abrange tb ao float, double… que não são aceitos pelo switch…

8)
Exatamente!

Abraços.

niggazflavors

Humm entao a declaração do operador seria: char operador;

blz…essa parte eu entendi…mas no caso, como eu faria para recuperar isso no comando case, ja que ele aceita somente numeros? eu teria q pré-definir os case’s?

lgi2020

Niggaz Flavors:
Humm entao a declaração do operador seria: char operador;

blz…essa parte eu entendi…mas no caso, como eu faria para recuperar isso no comando case, ja que ele aceita somente numeros? eu teria q pré-definir os case’s?

Você pode usar o char no comando switch.

Na verdade, um char pode ser representando como um int.

lgi2020

Exemplo:

char teste = 'a';

switch(teste) {
   case 'a':
  ...
}
Kassiane_Pretti
Niggaz Flavors:
Humm entao a declaração do operador seria: char operador;

blz...essa parte eu entendi...mas no caso, como eu faria para recuperar isso no comando case, ja que ele aceita somente numeros? eu teria q pré-definir os case's?

Por tras do char existe um inteiro, por isso não se deve falar que o switch aceita somente numeros e sim variaveis do tipo int e char.

No caso vc coloca assim:

char operador;

........

switch(operador)
case'+' : .....

8)

M

Em switch statements:

  • A expressão do switch -> char, byte, short, int ou enum (Java 5);
  • A constante do case -> mesmos tipos da expressão com a condição (restrição) de a constante ser uma compile time constant.
lgi2020

mfjeng:
Em switch statements:

  • A expressão do switch -> char, byte, short, int ou enum (Java 5);
  • A constante do case -> mesmos tipos da expressão com a condição (restrição) de a constante ser uma compile time constant.

Realmente…
A frase mais correta para definir o que um switch aceita como parâmetro é “algo que possa ser avaliado como um int”.
Assim como o amigo mfjeng citou acima: char, byte, short, int ou enum…

Abraços a todos.

Kassiane_Pretti

Lenbrando que por trás dos elementos de um enum (Java 5) existe um inteiro. Cada elemento reseberá uma numeração (inteira) assim sua manipulação pode ser feita da mesma forma que se faz com as variaveis do tipo int…

lgi2020

KassiPretti:
Lenbrando que por trás dos elementos de um enum (Java 5) existe um inteiro. Cada elemento reseberá uma numeração (inteira) assim sua manipulação pode ser feita da mesma forma que se faz com as variaveis do tipo int…

8)


Exatamente!
Eu tinha me esquecido disso. :oops:
Por isso falei que só aceitava char e int…

Essa é a parte boa de participar de um fórum: mesmo quando esquecemos coisas tão triviais, temos sempre pessoas que nos ajudam a lembrar! :slight_smile:

Abraços a todos.

niggazflavors

a parte da declaração eu entendi…e como eu recupero oq o uauario digitou como operador…no caso vou utilizar operador como char.
Como fazer para ele recuperar esse valor digitado, que no caso será, +, -, /, X?

Kassiane_Pretti

Captura assim:

operador = (JOptionPane.showInputDialog("Qual a operação?")).toCharArray();

Eu não me lembro muito bem, mas acho que é assim…
Se algum souber pode corrigir…

lgi2020

Cara, eu tô meio sem tempo...
Mas tente o seguinte:

import javax.swing.JOptionPane; 
public class TesteCalc { 
	public static void main (String args[]){ 
		double num1, num2, conta;
		
		conta = 0;

		String entrada, saida,operador;

		entrada = JOptionPane.showInputDialog("Digite o 1º numero:");

		num1 = Double.parseDouble(entrada);

		entrada = JOptionPane.showInputDialog("Digite o 2º numero:");

		num2 = Double.parseDouble(entrada);

		operador = JOptionPane.showInputDialog("Qual a operação?");

		switch (operador.charAt(0)){ 
			case '+': {
				conta = num1 + num2; 
				break; 
			}

		} 
		
		JOptionPane.showMessageDialog(null, conta);
		
	} 
}

Abraços.

niggazflavors

KassiPretti, consegui de um jeito parecido, olha só:

package inicio;

import javax.swing.JOptionPane;

public class AulaCase {

public static void main (String args[]){

double num1, num2, conta;

String entrada, saida;

char operador;

entrada = JOptionPane.showInputDialog(Digite o 1º numero:);

num1 = Double.parseDouble(entrada);

entrada = JOptionPane.showInputDialog(Digite o 2º numero:);

num2 = Double.parseDouble(entrada);

operador = JOptionPane.showInputDialog(Qual a operação?).charAt(0);

conta = 0;

switch (operador){

case +:

conta = num1 + num2;

break;

case -:

conta = num1 - num2;

break;

case /:

conta = num1 / num2;

break;

case x:

conta = num1 * num2;

break;				

}

JOptionPane.showMessageDialog(null, String.valueOf(conta));	

}

}

Funcionou!

lgi2020

Que bom que conseguiu!

Apenas uma dica: sempre que postar algum código, use a tag [ code’] e [’/code] para delimitar o mesmo.
Ajuda na visualização do seu tópico.

Abraços a todos.

niggazflavors

Blz!
Ae galera, muito obrigado a todos e valeu pela força!

[]'s

Kassiane_Pretti

Blz então…
Fico feliz por ter podido te ajudar 8)
Tendo mais duvidas post ela aqui…

até

graciosa

As opções do case no tipo char ficam entre aspas simples e não dupla.

wesley.comput

Segue uns exemplos ai mano.

Explicação sobre os tipos suportados pelo switch:
http://www.guj.com.br/posts/list/90442.java#484509

Switch com tipos enumerados:
http://www.guj.com.br/posts/list/15/90442.java#581157

Fragmento de código:

double x = 10;
		double y = 4;
		
		String s = JOptionPane.showInputDialog("Operacao: ");
		
		char op = s.toCharArray()[0];
		
		double res = 0;
		
		switch(op) {
			case '+' : res = x + y;
			           break;
			case '*' : res = x * y;
	                   break;
			default : System.out.println("Nenhuma operacao");
			          return;
		
		}
System.out.println(res);
Criado 4 de março de 2008
Ultima resposta 11 de nov. de 2008
Respostas 21
Participantes 7