Positivos, negativos e nulos

To fazendo mais exercícios aqui e estou com mais dúvidas… espero que vocês possam me ajudar de novo… vai ser assim até eu pegar o jeito… mas depois eu juro q n aperreio mais, ou aperreio menos! :wink:
o programa serve para fazer um input de 5 numeros e mostrar uma mensagem dizendo quantos são positivos, negativos e zeros…

Ele compila, só que quando roda ele não faz a soma das variáveis pos, neg e zer.

//calculando a quantidade de pos, negs e zeros int pos = 0; int neg = 0; int zer = 0; if (n1 > 0) pos = pos++; if (n1 < 0) neg = neg++; if (n1 == 0) zer = zer++;

n1 é um inteiro que o usuário define num input.
Aparentemente ele não está fazendo nenhuma dessas operções… por que?

Não acho q seja necessário, mas segue o código completo:

[code]import javax.swing.JOptionPane;

public class Exercise2_35 {

//string to int converter!
public static int stoiconv(String pos) {

  String sNumber = JOptionPane.showInputDialog("Digite o " + pos + " número");
  int number = Integer.parseInt(sNumber);
  return(number);

}

public static void main(String args[]) {

  //Input dos inteiros
  int n1 = stoiconv("primeiro");
  int n2 = stoiconv("segundo");
  int n3 = stoiconv("terceiro");
  int n4 = stoiconv("quarto");
  int n5 = stoiconv("quinto");
  
  //calculando a quantidade de pos, negs e zeros
  int pos = 0;
  int neg = 0;
  int zer = 0;
  if (n1 > 0) 
     pos = pos++;
  if (n1 < 0)
     neg = neg++;
  if (n1 == 0)
     zer = zer++;

  if (n2 > 1) 
     pos = pos++;
  if (n2 < 0)
     neg = neg++;
  if (n2 == 0)
     zer = zer++;

  if (n3 > 0) 
     pos = pos++;
  if (n3 < 0)
     neg = neg++;
  if (n3 == 0)
     zer = zer++;

  if (n4 > 0) 
     pos = pos++;
  if (n4 < 0)
     neg = neg++;
  if (n4 == 0)
     zer = zer++;
  
  if (n5 > 0) 
     pos = pos++;
  if (n5 < 0)
     neg = neg++;
  if (n5 == 0)
     zer = zer++;

  //DISPLAY
  JOptionPane.showMessageDialog(null, "A quantidade de números positivos é " + pos +
                               "\nA quantidade de números negativos é " + neg + 
                               "\nA quantidade de zeros é " + zer, "Resultado",
                               JOptionPane.PLAIN_MESSAGE);
  System.exit(0);

}

}[/code]

[]'s
Thiago

Troca o

num = num++

por

++num ou num++

Para entender o porque, faça isso

int num = 1;
System.out.println( num++ );
System.out.println( num );
System.out.println( ++num );
System.out.println( num );

tem um erro na logica do seu program.
o problema ta nesses comandos:

pos = pos++;

ia postar a resposta, mas como vc ta estudando, achei melhor deixar vc procurar… :slight_smile:
mas da uma estudada no que o operadores de pos incremento fazem.
debuga e ve o que acontece com eles.
se vc não conseguir, posta de novo…
flw!

[]'s

[code] int num = 1;
System.out.println( num++ );
System.out.println( num );
System.out.println( ++num );
System.out.println( num );

[/code]

o resultado sai
1
2
3
3

no num++ ele soma depois de exibir?
no ++ num ele exibe depois de somar?
mas de todo jeito ele não somou? por que na 3 linha ele exibe 3, q ele pega o 2 q tem antes + 1! Entendi o que ele fez, mas ainda não associei ao meu caso.
Coloquei todos os ++ antes e deu certo, mas dar certo não é suficiente, quero entender…

bah… eu não cheguei nessa parte de operadores ainda pelo meu livro, só vi num código que eu achei por aqui e quis usar…

[]'s

Thiago

quando vc usa a variavel com operador de pos incremento, primeiro o valor é usado depois somado.
p/ vc entender substitua as variaveis por valores tipo:

int num = 0;
num = num++;

se vc substiuir pelo pelo valor temos:

0 = 0++;

então ele esta associando 0 a variavel e depois incrementando, por isso a saida é zero, vc associa o novo valor(no momento é zero), e depois incrementa.
por isso que ++num(pre incremento) funciona, ou num++ direto, no primeiro caso vc incremta antes de associar o valor, e no segundo é incremntado direto o valor da variavel
deu p/ entender?
qq coisa posta ae.

[]'s

aH!!!
entendi!
simples…

Vlw ai pessoal!
Té a próxima!