[Resolvido] Resolver probleminha com condições

14 respostas
Danleonhart

Pessoal…

Estou aprendendo Java a partir de apostilas que encontro na Net, e de sites também :slight_smile:

tenho um problema para resolver, e penso que com o if else pode ser solucionado…bem, vamos a ele:

Entro com um valor x, e com condições tenho que dizer a qual classe(Baixo, Médio, Alto ou Altíssimo) ele pertence

tipo:

Se x esta entre 0 e 9 é Baixo;

Se x esta entre 10 e 19 é Médio;

Se x esta entre 20 e 29 é Alto;

Se x é maior que 30 é Altíssimo;

é bem simples…creio que com if else resolve-se, mas não sei como definir esses “ranges” (de 0 a 9…e tal…)
com o switch também dá, mas meu orientador fala que se usar o Switch terei de usar o break, e isso torna o código deselegante :lol:

14 Respostas

fernandopaiva

Danleonhart:
Pessoal…

Estou aprendendo Java a partir de apostilas que encontro na Net, e de sites também :slight_smile:

tenho um problema para resolver, e penso que com o if else pode ser solucionado…bem, vamos a ele:

Entro com um valor x, e com condições tenho que dizer a qual classe(Baixo, Médio, Alto ou Altíssimo) ele pertence

tipo:

Se x esta entre 0 e 9 é Baixo;

Se x esta entre 10 e 19 é Médio;

Se x esta entre 20 e 29 é Alto;

Se x é maior que 30 é Altíssimo;

é bem simples…creio que com if else resolve-se, mas não sei como definir esses “ranges” (de 0 a 9…e tal…)
com o switch também dá, mas meu orientador fala que se usar o Switch terei de usar o break, e isso toena o código deselegante :lol:

Leia a apostila FJ11 da Caelum e veja este link: http://gleichmann.wordpress.com/2008/01/21/declarative-programming-a-range-type-for-java/

t+ e boa sorte.

Danleonhart

Obrigado pela dica ! :smiley:
na verdade já tenho esta apostila…mas o problema da maioria dos brasileiros é esse…preguiça de ler ! :lol:

VALEU !

Bruno_Cunha
<blockquote>Se x esta entre 0 e 9 é Baixo;

Se x esta entre 10 e 19 é Médio;

Se x esta entre 20 e 29 é Alto;

Se x é maior que 30 é Altíssimo; </blockquote>

Utilizando estas as condições, você poderia aninhar os IFs assim:

String classe = "";
int x = [entrada];

if (x >= 0 && x <= 9) {
     classe = "Baixo";
} else if (x >= 10 && x <= 19) {
     classe = "Médio";
} else if (x >= 20 && x <= 29) {
     classe = "Alto";
} else if (x >= 30) {
     classe = "Altíssimo";
} else {
     classe = "Não Classificado";
}

Há outras soluções… Mas como está aprendendo, essa é a mais simples.
Você poderia ter um array:

String[] classeArray = {"Baixo", "Médio", "Alto", "Altíssimo"};

Pegar o valor inteiro da divisão de “x” por 10, e pegar a respectiva posição no Array classe.

String classe = classeArray[(int) x/10]

Funcionaria também :lol:

Espero ter ajudado.

Danleonhart

Com certeza ajudou muito Bruno ! :smiley:
quando se está aprendendo são esses tipos de resposta que abre a mente para outras formas de resolução !

VALEU ! :stuck_out_tongue:

Elizeu_Santos

Danleonhart:
Pessoal…

Estou aprendendo Java a partir de apostilas que encontro na Net, e de sites também :slight_smile:

tenho um problema para resolver, e penso que com o if else pode ser solucionado…bem, vamos a ele:

Entro com um valor x, e com condições tenho que dizer a qual classe(Baixo, Médio, Alto ou Altíssimo) ele pertence

tipo:

Se x esta entre 0 e 9 é Baixo;

Se x esta entre 10 e 19 é Médio;

Se x esta entre 20 e 29 é Alto;

Se x é maior que 30 é Altíssimo;

é bem simples…creio que com if else resolve-se, mas não sei como definir esses “ranges” (de 0 a 9…e tal…)
com o switch também dá, mas meu orientador fala que se usar o Switch terei de usar o break, e isso torna o código deselegante :lol:

break torna o código deselegante???
eu acho deselegante uma serie de ifs quando vc pode utilizar switch

InicianteJavaHenriqu

Só pode ser uma piada né :?: Por isso vc está rindo no final da frase…

Recomendo:

Como não aprender orientação a objetos: o excesso de ifs por Guilherme Silveira.

Nota: Não estou me referindo ao problema que vc apresentou no início do tópico, mas, somente a frase sua/orientador sobre a deselegância do break.

flw :thumbup:

JMARQ

Bruno Cunha, achei interessante está lógica com Array, porém fiquei analisando se a divisão de x = 40 por 10 é igual a 4, então, qual classe iria ser indicada? Pois bem sabemos que a primeira posição do Array é 0, 2ª = 1, 3ª = 2, 4ª = 3 e assim por diante, neste caso, como não temos nada na posição 4 essa lógica ficaria com erro. Não acha? Pois para ser Altíssimo teria que ser maior que 30, podendo, por exemplo, o valor de x ser 40 e para isso não teria classe para mesma.

Até mais.

S

Acho que não é o caso de ser deselegante, mas pelo intervalo numérico que você tá usando, se usar switch seu código iria ficar com muitos case, eu usaria if…else mesmo.

D3z40

Bruno Cunha:
[…]

Pegar o valor inteiro da divisão de “x” por 10, e pegar a respectiva posição no Array classe.

String classe = classeArray[(int) x/10]

Funcionaria também :lol:

Espero ter ajudado.

Muito boa sua ideia… não teria pensado nisso nunca…

Danleonhart

InicianteJavaHenrique

Entendi :smiley:

é isso mesmo…ele me falou que “break” é como se estivesse brecando a aplicação…onde pelo que entendo é isso mesmo, só que apenas no ciclo em questão…
acho que ele tá querendo me confundir :smiley:
veja o que ele me passou como exercicio:

[color=darkred]1 um comerciante calcula o valor da venda, tendo em vista a tabela a seguir:

valor < 10 lucro 70%
de 10 a 30 lucro 50%
de 30 a 50 lucro 40%
de 5 acima lucro 30%

crie um programa que entre com 5 produtos e imprima o nome do produto e o valor da venda. [/color]

Essa lógica tá meia estranha :lol:
mas fiz e passei para ele 8)

InicianteJavaHenriqu

Danleonhart:
InicianteJavaHenrique

Entendi :smiley:

é isso mesmo…ele me falou que “break” é como se estivesse brecando a aplicação…onde pelo que entendo é isso mesmo, só que apenas no ciclo em questão…
acho que ele tá querendo me confundir :smiley:

Sobre isto de “brecar” ou simples parar (seria uma tradução mais exata), vc não está se confundindo não, está certinho.

Danleonhart:
veja o que ele me passou como exercicio:

[color=darkred]1 um comerciante calcula o valor da venda, tendo em vista a tabela a seguir:

valor < 10 lucro 70%
de 10 a 30 lucro 50%
de 30 a 50 lucro 40%
de 5 acima lucro 30%

crie um programa que entre com 5 produtos e imprima o nome do produto e o valor da venda. [/color]

Essa lógica tá meia estranha :lol:
mas fiz e passei para ele 8)

Como já mostraram lá em cima, é mais viável resolver este problema com if elseif.

Mas não tem nada de errado, pelo que seu orientador passou não, no começo é assim, vc está ansioso para sair programando, mas ainda tem bastante coisa sobre O.O.e Java para aprender… tbm já fui iniciante, aliás sou como diz meu nome :smiley:

MManson

Nesse caso aí o if-else é tranquilo,e não acho que o switch seja deselegante,afinal existem muitos casos que irá ser excelente para usar,mas essa situação pede um if-else,apesar de poder fazer outras formas como o duke mencionou.

Elizeu_Santos

SalomaoNeto:
Danleonhart:

é bem simples…creio que com if else resolve-se, mas não sei como definir esses “ranges” (de 0 a 9…e tal…)
com o switch também dá, mas meu orientador fala que se usar o Switch terei de usar o break, e isso torna o código deselegante :lol:

Acho que não é o caso de ser deselegante, mas pelo intervalo numérico que você tá usando, se usar switch seu código iria ficar com muitos case, eu usaria if…else mesmo.

por que ficaria com muitos case cara???

Elizeu_Santos

Danleonhart:
InicianteJavaHenrique

Entendi :smiley:

é isso mesmo…ele me falou que “break” é como se estivesse brecando a aplicação…onde pelo que entendo é isso mesmo, só que apenas no ciclo em questão…
acho que ele tá querendo me confundir :smiley:
veja o que ele me passou como exercicio:

[color=darkred]1 um comerciante calcula o valor da venda, tendo em vista a tabela a seguir:

valor < 10 lucro 70%
de 10 a 30 lucro 50%
de 30 a 50 lucro 40%
de 5 acima lucro 30%

crie um programa que entre com 5 produtos e imprima o nome do produto e o valor da venda. [/color]

Essa lógica tá meia estranha :lol:
mas fiz e passei para ele 8)

seu professor falou isso? brekando a aplicação? se ele falou mesmo isso, me passa o email dele!
me perdoem as exceções, mas o brasil tem péssimos professores de TI.

Criado 25 de fevereiro de 2012
Ultima resposta 27 de fev. de 2012
Respostas 14
Participantes 9