Duvida: Como calcular a média dos valores somente positivos de um array?

Boa tarde pessoal!
Estou resolvendo um exercício e empaquei numa parada aqui… seguinte, estou montando um programa onde o usuário informa 8 números e o programa deve mostrar todos os números inseridos, depois os negativos e depois a média dos números positivos…, mostrar os números inseridos e negativos eu fiz, agora como que eu faço para pegar a soma dos números positivos do array e dividir pela quantidade de números somente positivos? sei que assim eu encontro a média mas não estou conseguindo implementar… segue o código que eu fiz:

import javax.swing.JOptionPane;
public class ex0 {
       
    public static void main(String[] args) {
           
    int num[] = new int [4];
    
    String guarda = "";
    String negativos = "";
    String positivos = "";
    int total = 0;
    double media = 0;
    
    for (int i = 0; i<num.length ; i++)
    {
        
        String valorStr = JOptionPane.showInputDialog("Informe um valor inteiro: ");
        int valor = Integer.parseInt(valorStr);
        
       if (valor > 0)
        
       {
            positivos = positivos + valor + ", ";   
            num[i] = valor;
            total += num[i];
            media = total / i;
       }
       
         else if (valor < 0)
        {
          negativos = negativos + valor + ", "; 
        }
         
        
     guarda = guarda + valor + ", ";
     num[i] = valor;
            
    }
        JOptionPane.showMessageDialog(null,"Os valores informados são: " + guarda  );
        JOptionPane.showMessageDialog(null, "Os valores negativos são: " + negativos);
        JOptionPane.showMessageDialog(null, "A soma dos valores positivos vale: " + total);
        JOptionPane.showMessageDialog(null, "A média dos valores positivos vale: " + media);

    }
}

bom… eh simples…

eu faria assim…

  • Faça um for q percorra todos os numeros do array

  • dentro do For… faça um IF (se o numero for maior q 0)…

  • se for maior q 0… soma ele num “resultado” e soma 1 em um “contador X”

  • termina o for…

  • entao vc pega o “resultado” e divide pelo “contador X”

  • o valor q ficar eh a media q vc ker =)

dica maior q essa impossivel hein =P

mas reveja o seu algoritmo… tem jeito mais facil de fazer oq vc tah fazendo =)
ker sabe primeiro fazer um FOR pra vc digitar os 8 numeros… em 8 posiçoes de Array…
e depois disso calcular/mostrar tudo na tela?

Positivos é maior ou igual a zero, não somente maior.

Para alguns matemáticos é somente os maiores que zero…para outros inclui-se o zero…eu prefiro dizer que zero é a ausência de alguma coisa…logo nem é positivo e nem negativo.

obrigado amigo, o mundo precisa de pessoas como vc…
vou estudar meu código para melhorá-lo, se tiver alguma apostila legal sobre java envie no meu email pois sou iniciante no assunto!! sgtbreitner@yahoo.com.br
Obrigado!

Para alguns matemáticos é somente os maiores que zero…para outros inclui-se o zero…eu prefiro dizer que zero é a ausência de alguma coisa…logo nem é positivo e nem negativo.[/quote]

Eu prefiro seguir a notação da teoria de conjuntos, onde Z+ é o conjunto de números inteiros positivos, e Z+* é o de inteiros positivos sem zero.

[quote=sgtbreitner]Boa tarde pessoal!
Estou resolvendo um exercício e empaquei numa parada aqui… seguinte, estou montando um programa onde o usuário informa 8 números e o programa deve mostrar todos os números inseridos, depois os negativos e depois a média dos números positivos…, mostrar os números inseridos e negativos eu fiz, agora como que eu faço para pegar a soma dos números positivos do array e dividir pela quantidade de números somente positivos? sei que assim eu encontro a média mas não estou conseguindo implementar… segue o código que eu fiz:
[/quote]

Aprenda a usar coleções ( List, Set, etc…) ou arrays. Não utilize strings para guardar conjuntos de coisas.

Conforme o usuário vai atribuindo novos digitos vc pode separar em duas listas. O resto das contas é trivial usando listas

[code]
import javax.swing.JOptionPane;
public class ex0 {

public static void main(String[] args) {
       
final  int quantidadeDeNumeros = 8;
List<Integer> positivos = new LinkedList<Integer>();
List<Integer> negativos = new LinkedList<Integer>();

for (int i = 0; i<quantidadeDeNumeros ; i++){
    
    String valorStr = JOptionPane.showInputDialog("Informe um valor inteiro: ");
    int valor = Integer.parseInt(valorStr);
    
   if (valor >= 0){
             positivo.add(valor);
   } else {
             negativo.add(valor);
   }
        
}

List<Integer> todos = new LinkedList<Integer>();

todos.addAll(positivos);
todos.addAll(negativos);

    JOptionPane.showMessageDialog(null,"Os valores informados são: " + todos );
    JOptionPane.showMessageDialog(null, "Os valores negativos são: " + negativos);
    JOptionPane.showMessageDialog(null, "A soma dos valores positivos vale: " + soma(positivos));
    JOptionPane.showMessageDialog(null, "A média dos valores positivos vale: " + media(positivos));

}

private static int soma(List<Integer> lista){
      int soma =0;
      
      for ( Integer i : lista ){
             soma+=i;
      }
          
      return soma;

}

private static double media(List<Integer> lista){
      
    if (lista.isEmpty()){
           return 0;
     }
          
      return soma(lista)*1D/lista.size();

}
}
[/code][/quote]