O switch case Java é uma estrutura muito importante para testar condições de uma forma simples e intuitiva, reduzindo a necessidade de criar blocos de código complexo usando vários if else encadeados.
No entanto, é preciso cuidado ao utilizá-la, pois qualquer pequeno erro na lógica empregada para definir as condições de teste pode causar diversos erros no programa.
Para evitar que isso aconteça, é necessário entender como de fato o switch case funciona e quando é melhor utilizar essa estrutura no lugar do if else. E é exatamente sobre isso que vamos falar neste post. Logo abaixo, veja o que preparamos para você:
- O que é o Switch case Java e para que serve?
- Como funciona o Switch case Java?
- Qual a Sintaxe do Switch case Java?
- Como é usada a instrução Break em Switch case?
- 4 exemplos de uso do Switch case Java!
- Switch case vs If else: quais as diferenças?
Continue com a gente e tenha uma boa leitura!
O que é o Switch case Java e para que serve?
O switch case é uma estrutura de decisão usada quando precisamos testar condições para determinar qual função será executada em seguida. Assim, essa expressão nos permite substituir múltiplos “if else if”, tornando o código criado mais simples, legível e fácil de manter.
Além disso, a estrutura switch case no Java trabalha com vários tipos de dados, como byte, short, long, string, int, enum, entre outros.
Como funciona o Switch case Java?
O funcionamento da estrutura switch é bastante simples. Inicialmente, o valor da variável passada no switch é comparado com os valores fornecidos em cada case. Se um desses valores for igual ao valor da variável, o bloco de código do case em questão será executado.
As comparações da estrutura switch são sempre feitas de forma sequencial e não há limite para a quantidade de cases que cada switch pode ter. Além disso, a estrutura switch também pode conter as declarações opcionais “break” e “default”, que explicaremos melhor nos próximos tópicos.
Qual a Sintaxe do Switch case Java?
Para utilizar o Switch case em java, usamos a seguinte sintaxe:
switch (expressão) {
case valor1:
// bloco de código que será executado
break;
case valor2:
// bloco de código que será executado
break;
case valorN:
// bloco de código que será executado
break;
default:
// bloco de código que será executado se nenhum dos cases for aceito
}
Sendo que:
- switch (expressão): é onde passamos a variável de teste que servirá de referência para as comparações que o programa deve fazer;
- case: é onde definimos o valor que será comparado com a variável de teste e o código que será executado caso sejam compatíveis;
- break: é a declaração opcional de quebra;
- default: é a declaração opcional padrão, na qual definimos o código que deve ser executado, se nenhum dos valores declarados nos cases for compatível com o valor passado na variável de teste.
No entanto, ao usar a estrutura switch case é importante lembrar que:
- cada switch pode conter um ou N cases;
- os valores dos cases não podem ser repetidos, caso contrário ocorrerá um erro durante a compilação do código;
- o valor de cada case deve ser do mesmo tipo da expressão switch;
- os valores dos cases não podem ser variáveis;
- a variável passada no switch deve ser de um dos tipos aceitos pela estrutura (short, byte, long, int, enum, string).
Como é usada a instrução Break em Switch case?
Como foi dito, a estrutura do switch case pode conter a instrução break. Essa é uma declaração opcional que, como o próprio nome indica, é usada para interromper a execução do código em um determinado ponto.
Mas por que esse comando é importante? Bom, algo que devemos dizer é que as comparações do switch continuam sendo feitas de forma sequencial mesmo que um case compatível tenha sido encontrado.
Ou seja, quando não há um comando indicando que o código deve ser interrompido, o switch faz a comparação de todos os cases sem exceção, independentemente se um deles for compatível ou não.
Obviamente, isso aumenta o consumo de recursos e o tempo de execução do código, o que não é algo desejável. É para evitar que isso aconteça que utilizamos o break no fim de cada case. Nesse ponto não existem grandes segredos, pois para utilizá-lo basta acrescentar a seguinte linha de código após os comandos declarados no case:
break;
4 exemplos de uso do Switch case Java!
Agora que você já tem uma boa noção do que é e como funciona o Switch case no Java, que tal aprofundar ainda mais o seu entendimento? Para isso, preparamos alguns exemplos simples e práticos que você pode observar logo abaixo. Vamos em frente?
1. Retornando o número escolhido com Switch case
Nesse primeiro exemplo, vamos nos manter em algo simples para facilitar o aprendizado, ok? Para isso, criamos um pequeno programa que pede um número para a pessoa usuária, lê o número digitado no teclado e retorna como saída uma frase indicando qual foi o número escolhido. Observe:
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Escolha um número entre 1 a 10");
int numero = entrada.nextInt();
switch (numero) {
case 1:
System.out.println("O número escolhido foi: 1.");
break;
case 2:
System.out.println("O número escolhido foi: 2.");
break;
case 3:
System.out.println("O número escolhido foi: 3.");
break;
case 4:
System.out.println("O número escolhido foi: 4.");
break;
case 5:
System.out.println("O número escolhido foi: 5.");
break;
case 6:
System.out.println("O número escolhido foi: 6.");
break;
case 7:
System.out.println("O número escolhido foi: 7.");
break;
case 8:
System.out.println("O número escolhido foi: 8.");
break;
case 9:
System.out.println("O número escolhido foi: 9.");
break;
case 10:
System.out.println("O número escolhido foi: 10.");
break;
default:
System.out.println("O número escolhido é inválido! Digite um número entre 1 a 10.");
}
}
}
Para o exemplo dado, caso o número escolhido seja “9”, a saída esperada é a seguinte:
O número escolhido foi: 9.
Por outro lado, se o número escolhido for 20, por exemplo, o programa deve retornar a seguinte saída:
O número escolhido é inválido! Digite um número entre 1 a 10.
2. Retornando um mês com Switch case
Ainda nos mantendo em exemplos simples, no código a seguir temos um programa parecido com o anterior, porém dessa vez retornaremos os meses do ano de acordo com a entrada dada. Ou seja, para cada número de 1 a 12, o código deve retornar seu respectivo mês. Caso a entrada seja inválida, o programa retorna uma saída padrão. Veja:
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o número referente ao mês desejado");
int numero = entrada.nextInt();
switch (numero) {
case 1:
System.out.println("O mês é Janeiro!");
break;
case 2:
System.out.println("O mês é Fevereiro!");
break;
case 3:
System.out.println("O mês é Março!");
break;
case 4:
System.out.println("O mês é Abril!");
break;
case 5:
System.out.println("O mês é Maio!");
break;
case 6:
System.out.println("O mês é Junho!");
break;
case 7:
System.out.println("O mês é Julho!");
break;
case 8:
System.out.println("O mês é Agosto!");
break;
case 9:
System.out.println("O mês é Setembro!");
break;
case 10:
System.out.println("O mês é Outubro!");
break;
case 11:
System.out.println("O mês é Novembro!");
break;
case 12:
System.out.println("O mês é Dezembro!");
break;
default:
System.out.println("Não existe um mês correspondente ao número escolhido! Digite um número entre 1 a 12.");
}
}
}
Para o exemplo acima, caso a entrada dada seja o número 7, o programa deve retornar a saída:
O mês é julho!
No entanto, se a entrada for um número diferente dos indicados, como 15, a saída esperada é a seguinte:
Não existe um mês correspondente ao número escolhido! Digite um número entre 1 a 12.
3. Calculando desconto com Switch case
Prosseguindo com nossos exemplos, agora vamos demonstrar uma forma de usar o switch case para calcular descontos baseados no preço de um item. No entanto, para simplificar o exemplo, desta vez não vamos ler o preço a partir do teclado. Nesse caso, usaremos uma variável já inicializada com um valor específico apenas para fins de demonstração. Observe:
public class CalcularDesconto {
public static void main(String[] args) {
int preco = 10;
switch (preco) {
case 10:
System.out.println("O novo preço é: " + (preco*0.9));
break;
case 20:
System.out.println("O novo preço é: " + (preco*0.8));
break;
case 50:
System.out.println("O novo preço é: " + (preco*0.7));
break;
case 100:
System.out.println("O novo preço é: " + (preco*0.6));
break;
default:
System.out.println("Não há descontos disponíveis para esse valor!");
}
}
}
Após executar o código do exemplo, a saída esperada é a seguinte:
O novo preço é: 9.0
Por outro lado, se a variável “preço” for inicializada com um valor diferente dos valores definidos nas cases, como 30 por exemplo, o programa deve retornar a seguinte linha de texto:
Não há descontos disponíveis para esse valor!
4. Calculando desconto com Switch case aninhadas
Assim como em outras linguagens de programação, o switch case no Java também permite o uso de cases aninhadas. Isso significa que, se necessário, é possível aplicar uma condição dentro de outra condição.
No exemplo a seguir, vamos verificar o desconto disponível para uma quantidade de itens de um determinado valor. Dessa forma, mostraremos como funciona o aninhamento de cases. Veja:
public class CalcularDesconto {
public static void main(String[] args) {
int preco = 10;
int quantidade = 100;
switch (preco) {
case 10:
switch (quantidade) {
case 100:
System.out.println("O novo preço é: " + (preco*0.9));
break;
default:
System.out.println("Desconto disponível apenas para 100 itens de valor igual a R$ 10!");
}
break;
case 20:
switch (quantidade) {
case 80:
System.out.println("O novo preço é: " + (preco*0.8));
break;
default:
System.out.println("Desconto disponível apenas para 80 itens de valor igual a R$ 20!");
}
break;
case 50:
switch (quantidade) {
case 60:
System.out.println("O novo preço é: " + (preco*0.7));
break;
default:
System.out.println("Desconto disponível apenas para 60 itens de valor igual a R$ 50!");
}
break;
case 100:
switch (quantidade) {
case 40:
System.out.println("O novo preço é: " + (preco*0.6));
break;
default:
System.out.println("Desconto disponível apenas para 100 itens de valor igual a R$ 10!");
}
break;
default:
System.out.println("Não há descontos disponíveis para esse valor!");
}
}
}
Quando o código acima é executado, o retorno esperado é:
O novo preço é: 9.0
No entanto, se alteramos o valor das variáveis “preço” e “quantidade” para 20 e 10 respectivamente, a saída que deverá ser retornada é:
Desconto disponível apenas para 80 itens de valor igual a R$ 20!
Já se alterarmos apenas o valor da variável “preço” para 30, por exemplo, o programa deve retornar a saída abaixo:
Não há descontos disponíveis para esse valor!
Switch case vs If else: quais as diferenças?
Assim como o if else, a declaração switch case funciona como uma estrutura de decisão condicional. Nesse caso, como podemos diferenciá-las e saber em quais casos usar cada uma delas? Para responder essa questão, devemos observar alguns pontos importantes no funcionamento dessas estruturas, como:
- velocidade: dependendo da quantidade de casos que precisam ser testados no código, a velocidade de execução pode ser afetada. Por isso, se o número de casos for maior que 5, é interessante considerar utilizar a estrutura switch e não o if else;
- valores fixos vs valores booleanos: o if else é melhor para testar condições booleanas, já a estrutura switch é melhor para testar valores fixos;
- legibilidade do código: em muitos casos, o switch case ajuda a manter o código limpo, pois evita que uma quantidade muito grande de if else if sejam usados no programa;
- expressão de teste: outro ponto importante que deve ser analisado é a expressão que será usada como base para o teste condicional. Isso porque o switch case aceita apenas valores fixos para teste. Por outro lado, o if else também é capaz de testar faixas de valores e condições além de valores fixos.
Agora você já sabe o que é e como funciona a estrutura switch case Java. Trata-se de um elemento simples e prático de usar, que pode ser muito útil quando precisamos substituir blocos de if else para melhorar a clareza e legibilidade de um código!
E aí, conseguimos esclarecer suas dúvidas sobre o switch case Java? Então, continue aprofundando seus conhecimentos em programação e conheça a linguagem Go!