Olá pessoal, sou iniciante em Java e este é meu primeiro Tópico aqui no Guj, e creio que será o primeiro de muitos.
Bom, estou com uma duvida meio boba, mas que esta dando um erro e não consegui ver aonde ele está:
// Encontrar o maior numero.if(a>b&a>c)maior=a;if(b>a&b>c)maior=c;if(c>a&c>b)maior=b;// Encontrar o menor numeroif(a<b&a<c)menor=a;if(b<a&b<c)menor=c;if(c<a&c<b)menor=b;
No código acima, era pra encontrar o maior e o menor numero, mas a estrutura não está considerando o ultimo If do maior e nem o Ultimo If do menor numero.
Por exemplo: Se o usuario digita 1, 5 e 8, o resultado é:
Maior: 5
Menor: 1
Ao contrario, o Usuario digita 8, 5 e 1 e o resultado é:
Por isso que dá erro? Se ele fosse curto circuitado ele devia funcionar assim msmo, não?
ddmizu
Bendito ctrl c, ctrl v!
peczenyj
Humm… viajei então… desculpe :oops:
ddmizu
Não! To perguntando! :oops:
Pq tipo, curto circuitado não é quando vc tem por exemplo uma saraivada de AND, se um for falso ele nao continua resolvendo as outras expressões lógicas, certo?
É que estou resolvendo alguns exercicíos de um livro, e como um é base para o outro, eu copio, colo e modifico. :roll:
Mas acabei percebendo algumas coisas:
-Deu na mesma usar operador de curto circuito e o outro simples.
-Agora esta apresentando um erro:
Quando o usuario repete um mesmo numero duas vezes, o resultado é zero. Por exemplo:
Usuario digita 1, 1, 8
Resultado: Maior 8, Menor 0.
Usuario digita 1, 1 e 1
Resultado: Maior 0, Menor 0.
O mesmo ocorre para maior e menor numero.
Desculpe se estiver abusando.
ddmizu
Ta tranquilo, campeão!
Na verdade não é q dá 0, dá o número q vc colocou pra inicializar as variáveis.
Vc tem um problema na lógica, observa:
A = 1, B=1 e C = 8.
if (a < b & a < c) // 1 menor q 1 e 1 menor q 8 - FALSO
menor = a;
if (b < a & b < c) // 1 menor q 1 e 1 menor q 8 - FALSO TBM
menor = b;
if (c < a & c < b) // 8 menor q 1 e 1 menor q 8 - FALSO DENOVO
menor = c;
Entendeu o problema? 1 não é menor que 1! ;D
Oliveira_SP
Certo, intendi. Ele não estava atendendo nenhuma condição de If.
Resolvi o caso assim, e está dando certo agora (ele mostra o menor ou maior numero, mas não de qual variavel ele vem):
// Encontra o maior numero.if(a>=b&&a>=c)maior=a;if(b>=a&&b>=c)maior=b;if(c>=a&&c>=b)maior=c;// Encontra o menor numeroif(a<=b&&a<=c)menor=a;if(b<=a&&b<=c)menor=b;if(c<=a&&c<=b)menor=c;
Outra pergunta: é certo um programador se preocupar em usar o minimo de variaveis possivel?
Obrigado a todos!
ddmizu
Showw! Blza!
É… Entendendo que vc quer economizar variáveis pra economizar memória dependendo da dimensão do seu programa é importante sim. Só que muitas vezes economizar uma variável, implica em aumentar a complexidade do código e diminuir a legibilidade.
Cada caso é um caso. Em programas pequenos eu não sei se vale a pena esquentar a cabeça com isso.
Oliveira_SP
Ok, intendi amigo!
Obrigado pelas respostas, e até a próxima (que concerteza terá).
Abraços!
ddmizu
Tranquilo, campeão!
É um prazer ajudar!
;D
Abcs!
R
rafaelquines
o “&” sozinho é usado para bitwise, operação com bits.
por exemplo, o resultado da lógica E ("&") do número 13 e 21 é igual a 5.
0 0 0 0 1 1 0 1 - 13
0 0 0 1 0 1 0 1 - 21
0 0 0 0 0 1 0 1 - 5
Seria só os bits que conténham valos nos dois elementos…