Positivos, negativos e nulos

5 respostas
thiagossantos

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:

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);
   }

}

[]'s
Thiago

5 Respostas

_fs

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 );
jgbt

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

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

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

jgbt

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

thiagossantos

aH!!!
entendi!
simples…

Vlw ai pessoal!
Té a próxima!

Criado 20 de abril de 2005
Ultima resposta 20 de abr. de 2005
Respostas 5
Participantes 3