Switch....case

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

Switch não aceita Strings.

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

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

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…

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)[/quote]
Exatamente!

Abraços.

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?

[quote=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?[/quote]

Você pode usar o char no comando switch.

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

Exemplo:

[code]char teste = ‘a’;

switch(teste) {
case ‘a’:

}[/code]

[quote=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?[/quote]

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:

[code]char operador;

switch(operador)
case’+’ : …

[/code]

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.

[quote=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.

[/quote]

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.

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…

[quote=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)[/quote]
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.

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?

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…

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

[code]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);
	
} 

}[/code]

Abraços.

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!

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.

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

[]'s

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

até