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]