Else without If

8 respostas
L

Meu professor nunca explicou quando se abre ou se fecha uma chave, aí não só eu mas meus colegas também ficam perdidaços nisso, ele diz quantos são positivos e calcula certo só o problema das chaves mesmo.

import javax.swing.JOptionPane;

class exercicio3for

{
    public static void main (String args [])
    {
    
    double num, positivos, negativos, soma_positivos, soma_negativos;
    int i;  
    i =1;
    positivos =0;
    negativos =0;
    soma_positivos =0;
    soma_negativos =0;
    for (i =1; i<=10; i++)
    
    {
    num = Double.parseDouble(JOptionPane.showInputDialog("Digite um número qualquer"));
    
    
    if (num > 0)
        
        positivos =  positivos +1;
        soma_positivos = soma_positivos +num;
    else
        negativos = negativos +1;
        soma_negativos = soma_negativos +;
    }
        
    }
    
    JOptionPane.showMessageDialog(null, "a quantidade de números positivos é de" +positivos+
    "\n a soma dos positivos é de "+soma_positivos+
    "\n\n a quantidade de números negativos é de" +negativos); 
    
    }
}

8 Respostas

Rodrigo_Sasaki

sempre que você for escrever um bloco de código dentro de uma condição ou repetção, e esse bloco tiver mais do que um “comando”, deve usar chaves

ex:

if( valor > 1 ){
    chamaMetodo1();
    chamaMetodo2();
}

for(int i=0 ; i<=10 ; i++){
    chamaMetodo1();
    chamaMetodo2();
}

agora se só houver 1 “comando” no bloco, não são necessárias as chaves

if( valor > 1 )
    chamaMetodo1();


for(int i=0 ; i<=10 ; i++)
    chamaMetodo1();

no seu if ele calcula os positivos, porque como não tem chaves delimitando o bloco, ele só executa o primeiro comando após o if

L

Valeu cara!

Abraço!

L

Não sei se posso fazer post duplo, se não posso desculpe.

Aproveitando o gancho: quando o número digitado for igual a 0 como fazer que a contagem seja interrompida?

luyz

voce pode usar o break;

exemplo

for(int i =0;i<10;i++){

num = Double.parseDouble(JOptionPane.showInputDialog("Digite um número qualquer"));  

if(num==0)
break; //sai do metodo for.

//se for diferente de zero ele executas as funçoes abaixo

}
gomesrod

Atenção: o digaoneves está apenas mostrando uma característica da sintaxe da linguagem, mas seria interessante você saber também que NUNCA deve utilizar dessa forma.

O “if” sem chaves gera um código menos legível e pode levar a erros como o que aconteceu com você por exemplo.
Seu uso é desencorajado pelas convenções de código, pelos manuais de boas práticas e também por qualquer pessoa que tenha ao menos um pingo de juízo !
:slight_smile:

L

Obrigado pela ajuda, só esse mais, a ideia é dar bonificação somente se o total de vendas atingir 2000, tenho certeza que é coisa básica mas às vezes o cara não percebe! :)

import javax.swing.JOptionPane;

class bonificacao_por_venda
{
    public static void main (String args [])
    {
    int i,vendas, total_venda=0, necessario=2000, bonificacao=0;
   
    for (i =1; i<=5; i++)
    {
    vendas = Integer.parseInt(JOptionPane.showInputDialog("Digite as vendas do " +i+ "º vendedor"));
    total_venda +=vendas; // sinal calcula com todas as repetições
    {
    if (total_venda > bonificacao)
    bonificacao = total_venda * 10/100;    
    JOptionPane.showMessageDialog(null, "A bonificação dos funcionários será de: R$" +bonificacao);        
    }
    {     
    else
    JOptionPane.showMessageDialog(null, "NÃO HAVERÁ BONIFICAÇÃO!");
    }

}
}
}
}
F

Quando por exemplo vc tem uma condição assim:

int i = 0;
if(i==0)
i++;

//neste caso pode usar sem chaves, pois sem chaves o if só vai executar uma linha abaixo do if
//porém não é recomendado usar isso, para uma boa prática de programação
L
import javax.swing.JOptionPane;

class rascunho
{
    public static void main (String args [])
    {
    int i,vendas, total_venda=0, necessario=2000, bonificacao=0;
   
    for (i =1; i<=5; i++)
    {   
    vendas = Integer.parseInt(JOptionPane.showInputDialog("Digite as vendas do " +i+ "º vendedor"));
    total_venda +=vendas; // sinal calcula com todas as repetições
    bonificacao = total_venda * 10/100;
    }
    if(total_venda >= necessario)
    JOptionPane.showMessageDialog(null, "A bonificação dos funcionários será de: R$" +bonificacao);     
    else
    JOptionPane.showMessageDialog(null, "NÃO HAVERÁ BONIFICAÇÃO!");
        
}
}

Agora dá certo :oops:

Criado 24 de junho de 2011
Ultima resposta 24 de jun. de 2011
Respostas 8
Participantes 5