Tenho um exercicio que pede para dar um desconto de 0% se a compra for de 0 à 1000, desconto de 5% se a compra for de 1001 à 3000 e desconto de 10% se a compra for acima de 3000
Fiz da seguinte forma: ( mas da problema nos if, else )
publicclassCompra{publicstaticvoidmain(Stringargs[]){intvl=1000;if(vl<=1000)System.out.println(" A Compra não teve desconto");System.out.println(" O Valor a ser pago e: "+vl);elseif(vl<=3000)System.out.println(" O Desconto foi de 5%");System.out.println(" O Valor a ser pago e: "+vl*0.95);elseSystem.out.println(" O Desconto foi de 10%");System.out.println(" O Valor a ser pago e: "+vl*0.90);}}
não vejo nenhum problema a não ser a falta de chaves abrindo e fechando os blocos if/else.
A lógica está certa.
F
fepe97
publicclassCompras{publicstaticvoidmain(Stringargs[]){intvl=1000;if(vl<=1000){System.out.println(" A Compra não teve desconto");System.out.println(" O Valor a ser pago e: "+vl);}elseif(vl<=3000){System.out.println(" O Desconto foi de 5%");System.out.println(" O Valor a ser pago e: "+vl*0.95);}elseSystem.out.println(" O Desconto foi de 10%");System.out.println(" O Valor a ser pago e: "+vl*0.90);{}}
Será que isso ajuda ???
rockstorm
O problema estava no fechamento das chaves…
segue:
publicclassCompra{publicstaticvoidmain(Stringargs[]){intvl=2000;if(vl<=1000){System.out.println(" A Compra não teve desconto");System.out.println(" O Valor a ser pago e: "+vl);}elseif(vl<=3000){System.out.println(" O Desconto foi de 5%");System.out.println(" O Valor a ser pago e: "+vl*0.95);}else{System.out.println(" O Desconto foi de 10%");System.out.println(" O Valor a ser pago e: "+vl*0.90);}}}
Até…
A
andre2k2
programadores VB… hahahha
Marck
Boa tarde,
wmor
Quando vc usa um if e não coloca {} (chaves), ele considera apenas a linha seguinte. No caso abaixo:
if(vl<=1000)System.out.println(" A Compra não teve desconto");System.out.println(" O Valor a ser pago e: "+vl);
...com o if sem chaves, a mensagem "O Valor a ser pago e:" , independente de entrar no if será exibida. Já a mensagem " A Compra não teve desconto" será exibida apenas se entrar no if. O mesmo vale para o else e também para laços for/while:
for(inti=0; i <=2; i++ )System.out.println("Dentro do Laço");System.out.println("Fora do Laço");
...que exibirá:
DentrodoLaçoDentrodoLaçoDentrodoLaçoForadoLaço
Abraço!
LPJava
so explicando o pq… a ele… é que qdo vc nao poe as chaves… ele executa somente 1 linha apos a instrução if… e isso não é um problema do if :D.
W
wmor
Valeu Galera…
T
thingol
Acho que a sintaxe Ada (PL/SQL) é mais natural nesse caso para quem está começando:
A sintaxe Pascal (Delphi) é bem desajeitada, tanto é que o Niklaus Wirth desistiu dela quando foi inventar outras linguagens (Modula, Modula-2, Modula-3 etc.). Em Pascal o ";" é um SEPARADOR de comandos, não um TERMINADOR de comandos (uma sutileza que deu muitos problemas na versão original da linguagem).