Comando Case

11 respostas
Paulinhaaa

Olá Pessoal!

Preciso respondser a seguinte questão:
Um banco concederá um crédito especial aos seus clientes, variável com o saldo
médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o
valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o
saldo médio e o valor do crédito. [color=orange](use o comando caso-de e não faça repetições)[/color]
Com os seguintes valores:

Saldo médio = de 0 a 200
Percentual =nenhum crédito …

Bem minha dúvida é:
Eu poderia fazer tal código usando tranquilamente o if-else.
Mas o professor pede(como destacado a cima)que seja com o case.

Sei que o camando case eu utilizo em inteiros ou strinsg…

Mas como fazer para colocar ambos os valores em um caso só?

switch(SaldoMedio) case SaldoMedio<=0 && SaldoMedio<=200: System.out.print("Nenhum crédito");

Essa seria mais ou menos a lógica, mas como implementar?Pq dessa forma da erro.

Grata desde já!
:slight_smile:

11 Respostas

nel

Oi!

Paula, procure iniciar as variavéis com letras em minusculo.
O Switch aceita um objeto de um Tipo, inclusive Enumeration.

Não entendi a parte em que você pergunta:

Mas como fazer para colocar ambos os valores em um caso só?

Sobre o Switch, não esqueça de usar o break quando finalizar um case, caso contrário, ele continua executando os próximos.

O case não é uma condição dessa forma, ele trabalha com constantes, exemplo: 1, 2, 3…e não um if no case.
Você fez algo como case se x < 0 && x > 10 algo assim, entende?

Tens que alterar sua lógica moça :slight_smile:
Abraços.

Paulinhaaa

Sei sim que deve usar o break.

Sei que o Case trabalha com constantes.

E dai minha dúvida,
Pq o professor quer que utilize use o comando caso-de e não faça repetições.
Sei que usando o comando if-else eu faria tranquilamente.

O que fazer nesse caso?

nel

Paulinhaaa:
Sei sim que deve usar o break.

Sei que o Case trabalha com constantes.

E dai minha dúvida,
Pq o professor quer que utilize use o comando caso-de e não faça repetições.
Sei que usando o comando if-else eu faria tranquilamente.

O que fazer nesse caso?

Oi!

Talvez a resposta esteja aqui: calcule o valor do crédito de acordo com a tabela abaixo.
Qual seria essa tabela?

Paulinhaaa

Segue em anexo

henriqueluz

Sinceramente acho que não tem como fazer, só se tu colocar todos os valores dentro do teste do case uma tremenda gambis :stuck_out_tongue:

E

Primeira coisa: o seu professor pediu o comando “caso-de”. Note que está em português - isso quer dizer que primeiramente você tem de resolver seu problema em português estruturado, depois e que você converte em um programa.

A conversão de português estruturado para um programa Java não precisa necessariamente usar algum determinado recurso da linguagem.

Ou seja, acredito que não quer dizer que você tenha de implementar usando um “switch/case” - nesse caso, seria um if /else if etc. com os operadores lógicos (&&, <= etc.).

Mas se for realmente isso (que tal perguntar ao seu professor, hein?) você pode usar um truque.

Faça uma continha. Pegue o valor, ache o valor inteiro (um cast para (int) resolve), subtraia 1, e faça a divisão inteira por 200.

Se der 0, então ele estará entre 0 e 200.
Se der 1, então ele estará entre 200 e 400.
Se der 2, então ele estará entre 400 e 600.
Se der mais que 2, será maior que 600.

Paulinhaaa

Obrigada nel,henriqueluz e entanglement.

:slight_smile:

henriqueluz

entanglement
Pô veio, que solução foda! Massa mesmo. hehe :slight_smile:
Muito bom aprender cada vez mais nesse fórum.

lucasportela

Paulinha,

"Mas como fazer para colocar ambos os valores em um caso só? "

Bom se fosse pra fazer tudo em uma condição só, com certeza o mais indicado seria usar o comando IF

Quando utilizamos o switch-case, é porque temos uma multipla escolha, como por exemplo um menu ou intervalos(como é o seu caso)

Paulinhaaa

Obrigada lucasportela!

lucasportela
private void testeSwitchCase(){
    	int x = 0;
    	
    	switch((x-1)/200) {
    	    case 0: System.out.println("0-200"); break;
    	    case 1: System.out.println("201-400"); break;
    	    case 2: System.out.println("401-600"); break;
    	    case 3: System.out.println("601-800"); break;
    	    default: System.out.println("Valor Inválido");
    	}
    }

Eu tentei usar uma lógica, mas depois vi que estava errada, então fiz do jeito que o amigo entanglement falou
deu certo, testado e aprovado

Criado 12 de agosto de 2011
Ultima resposta 12 de ago. de 2011
Respostas 11
Participantes 5