Else without If

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.

[code]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); 

}

}
[/code]

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

Valeu cara!

Abraço!

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?

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

}

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:

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! :slight_smile:

[code]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!");
}

}
}
}
}

[/code]

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

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: