Problema com if else

8 respostas
W

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 )

public class Compra
{
public static void main ( String args[] )
{
 
int vl = 1000;
		
if ( vl <= 1000)
System.out.println(" A Compra não teve desconto" );
System.out.println(" O Valor a ser pago e: "+ vl );
		
else if ( 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 );
		
}
		
}

grato

8 Respostas

L

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
public class Compras {

	public static void main ( String args[] ) {


	int vl = 1000; 

	if ( vl <= 1000) {
		System.out.println(" A Compra não teve desconto" ); 
		System.out.println(" O Valor a ser pago e: "+ vl ); 
	}
	
	else if ( 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 ); 
		{
	} 

}

Será que isso ajuda ???

rockstorm

O problema estava no fechamento das chaves…

segue:

public class Compra 
{ 
	public static void main ( String args[] ) 
	{ 

		int vl = 2000; 

		if ( vl &lt= 1000) {
			System.out.println(" A Compra não teve desconto" ); 
			System.out.println(" O Valor a ser pago e: "+ vl ); 
		}
		else if ( vl &lt= 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

programadores VB… hahahha :smiley:

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(int i = 0; i <=2; i++ )
    		System.out.println("Dentro do Laço");
    		System.out.println("Fora do Laço");

...que exibirá:

Dentro do Laço
Dentro do Laço
Dentro do Laço
Fora do Laç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

Valeu Galera…

T

Acho que a sintaxe Ada (PL/SQL) é mais natural nesse caso para quem está começando:

if condicao then
   comandos;
   comandos;
elsif condicao then
   comandos;
   comandos;
else 
   comandos;
   comandos;
end if;

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).

if condicao then
    begin
        comandos;
        comandos         <-- Note que na versão original da linguagem não deveria haver ";" antes do end
    end                      <-- Note que não deve haver ";" antes do else
else if condicao then
    begin
        comandos;
        comandos
    end
else 
    begin
        comandos;
        comandos
    end;

(Modula 2 etc. se parecem com Ada e não com Pascal nesse ponto.)

Sempre achei que as chavinhas davam um ar muito "matemático" ao C (e por extensão ao C++ e ao Java) que ele não tinha de maneira alguma.

Criado 10 de setembro de 2007
Ultima resposta 11 de set. de 2007
Respostas 8
Participantes 8