Olá.
Estou fazendo um curso de Java e o professor e estou tentando fazer um exercicio, mas
ele ta um pouco dificil, não sei como resolver, pois já pesquisei, não sei onde
pesquisar mais, se alguem puder me ajudar (não resolver, mas só ajudar por favor):
2) Verifique o valor de uma variável x, imprimindo uma mensagem quando for maior, menor
e igual a 10, sem usar o if().
Obs: Tentei o usar o Switch case, mas ele faz comparação numérica e não booleana.
Espero que possam me ajudar.
Obrigado desde já!
sem usar o if()… eu usaria o operador ternário…
int aux=(variavel<10? -1: (variavel>10? 1: 0));
switch(aux) {
case -1: //variavel menor que 10
case +1: //variavel maior que 10
case 0: //variavel igual a 10
}
apelei?
Hmm, intendi…
Muito obrigado Alfredo.
Abração!
Será que pode usar o operador ternário hein?
Se sim, não é melhor fazer algo assim?
public class MenorQue10{
public static void main(String args[]){
System.out.println(Integer.parseInt(args[0])<10?"Eh Menor":"Naum eh Menor");
}
}
Tem outras formas, deixa eu fechar uns incidentes aqui e já posto (ou vamos discutindo formas de se fazer)
eu disse como usar o switch() porque ele pensou nisso…
e dei a alternativa do operador ternário, só isso…
e é preciso concatenar o operador ternário pra analisar a possibilidade =10
se fosse em C dava pra analisar bit a bit, mas em java eu não vejo outra alternativa senão o operador ternário…
bem… na verdade daria pra usar while se puder usar break
while(variavel<10) {
System.out.print("menor que 10");
break;
}
while(variavel>10) {
print("maior");
break;
}
e até for (desconsiderando a inicialização e o passo você fica com um while…)
for(; variavel==10;) {
System.out.println("igual a 10");
break;
}
hauhauahuah
que feio…
[quote=Alfredo Barbosa]eu disse como usar o switch() porque ele pensou nisso…
e dei a alternativa do operador ternário, só isso…
e é preciso concatenar o operador ternário pra analisar a possibilidade =10
se fosse em C dava pra analisar bit a bit, mas em java eu não vejo outra alternativa senão o operador ternário…[/quote]
:o
Na verdade eu pensei em altas formas, queria ver pra gente discutir as formas possíveis!
Olha mais uma, mas só pra números positivos
public class MenorQue10{
public static void main(String args[]){
int num = Integer.parseInt(args[0]);
num /=10;
switch(num){
case(0):
System.out.println("Eh Menor");
break;
default:
System.out.println("Naum Eh menor");
break;
}
}
}
Quando o número for menor que 10 o resultado vai ser 0
tem como usar o While e o For também, só que na primeira iteração, tendo como condição o número menor que 10, você sai do programa
tem outras formas loucas também!
o resto não, o resultado mesmo, né?
assim você já vê se ele é menor ou não
depois usando o resto da divisão você vê se ele é igual ou maior
[quote=Alfredo Barbosa]o resto não, o resultado mesmo, né?
assim você já vê se ele é menor ou não
depois usando o resto da divisão você vê se ele é igual ou maior
[/quote]
É vdd, edited
Eu só queria uma forma mais simples mesmo.
Pois to começando agora.
^^
Obrigado ai galera.
olha, roubei seu código
public class MenorQue10{
public static void main(String args[]){
int num = Integer.parseInt(args[0]);
int aux=num%10;
num /=10;
switch(num){
case(0):
System.out.println("Eh Menor");
break;
case 1:
switch(aux) {
case 0:
System.out.println("igual");
break;
default:
System.out.println("maior");
break;
}
break;
default:
//maior também
}
}
}
Quer saber outra forma doida de pura gambiarra também? Lendo o texto do número:
public class MenorQue10{
public static void main(String args[]){
switch (args[0].length()){
case (1):
System.out.println("Eh Menor");
break;
default:
switch(args[0].charAt(0)){
case ('-'):
System.out.println("Eh Menor");
break;
default:
System.out.println("Naum Eh Menor");
break;
}
break;
}
}
}
Flávio, desculpe por zoar seu post
Agora sim ficou mais facil ainda intender.
Muito bom.
Obrigado mesmo Alfredo, vlw Jesuino.
[quote=Jesuino Master]Quer saber outra forma doida de pura gambiarra também? Lendo o texto do número:
public class MenorQue10{
public static void main(String args[]){
switch (args[0].length()){
case (1):
System.out.println("Eh Menor");
break;
default:
switch(args[0].charAt(0)){
case ('-'):
System.out.println("Eh Menor");
break;
default:
System.out.println("Naum Eh Menor");
break;
}
break;
}
}
}
Flávio, desculpe por zoar seu post :P[/quote]
e colocando outro switch lá dentro pra saber se é igual ou maior =D
que aula de lógica, Jesuíno!
Eu usaria o switch case para responder o exercício no entanto acho o modo com ternário mais elegante.
E como vc analisaria bit-a-bit sem o if?
Não sei se vc sabe, mas o java tem todos os operadores bitwise que o C tem.
E como vc analisaria bit-a-bit sem o if?
Não sei se vc sabe, mas o java tem todos os operadores bitwise que o C tem.[/quote]
realmente eu não sabia disso no java =O
eu analisaria os bits usando o operador ternário ou o switch() mesmo =)
(lembrando que a questão não é sobre legibilidade ou desempenho, mas sim sobre alternativas, é uma pegadinha)
System.out.println(
(4° bit menos significativo)==0? "menor": (
(3° bit menos significativo)==0? ((2° bit menos significativo)==0? "menor": ((1° bit menos significativo)==0? "igual": "maior")):
"maior")));
assim =D
calma aí… meu pseudo código ficou complicado… olha matematicamente…
0xxxx => menor
10xx =>
100x => menor
1010 => igual
1011 => maior
11xx => maior
considerando um int (32 bits) é só colocar cada outro bit na fórmula
se um deles for 1 já era, o número é maior
Ah tá, pensei que usando operadores bitwise vc teria uma forma sem o ternário, que já havia sido citado. Fiquei imaginando qual… heheheh
ah, if() é essencial, né…
não sei se tô falando asneira, mas acho que tudo é baseado em if(), break e goto():
while() e consequentemente do while() e for(), o operador ternário, switch()
e depois disso toda a orientação a objetos
acho que o professor do menino vai aceitar o operador ternário mesmo…
tem outra forma também, de gambiarra de novo
public class MenorQue10{
public static void main(String args[]){
int num = Integer.parseInt(args[0]);
num-=10;
switch (num){
case (0):
System.out.println("Eh igual a 10");
break;
default:
switch(String.valueOf(num).charAt(0)){
case ('-'):
System.out.println("Eh Menor que 10");
break;
default:
System.out.println("Eh maior que 10");
break;
}
break;
}
}
}