/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Guj;
/**
*
* @author Gustavo
*/
import javax.swing.*;
import java.text.DecimalFormat;
public class media_tres {
public static void main(String[] args) {
int cont = 0;
double media, num = 0, soma = 0;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um numero", "Numero", JOptionPane.QUESTION_MESSAGE));
soma = soma + num;
if (num >= 0 && num % 3 == 0) {
System.out.println(num);
}
cont++;
}while (num != 0);
DecimalFormat aproximador = new DecimalFormat("0.00");
System.out.println("A soma é " + soma);
//diminui o cont de uma unidade porque ele estava somando o valore ZERO
System.out.println("A quantidade de numeros digitados é " + (cont - 1));
media = soma / cont;
System.out.println("A media é " + aproximador.format(media));
}
}
A soma estava fora do while.
E a variavel num estava começando de zero, ou seja , nao entrava no while
O contador conta quando vc digita zero tambem, por isso eu diminui ele de uma unidade.
Caso nao queira mudar a variavel num para 1, mude o while para do{}while();
O seu erro é que você colocou a soma fora do laço “if”.
Fiz as alterações no seu código:
int cont = 0;
double media, num = 0, soma = 0;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um numero",
"Numero", JOptionPane.QUESTION_MESSAGE));
if (num >= 0 && num%3==0) {
System.out.println(num);
cont++;
soma = soma + num;
}
} while (num != 0);
// aqui decremento o "cont" que é o do valor "0" que é digitado para sair.
cont--;
DecimalFormat aproximador = new DecimalFormat("0.00");
System.out.println("A soma é " + soma);
System.out.println("A quantidade de numeros digitados é " + cont);
media = soma/cont;
System.out.println("A media é " +aproximador.format(media));
[quote=WendersonLP]O seu erro é que você colocou a soma fora do laço “if”.
Fiz as alterações no seu código:
[code]
int cont = 0;
double media, num = 0, soma = 0;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um numero",
"Numero", JOptionPane.QUESTION_MESSAGE));
if (num >= 0 && num%3==0) {
System.out.println(num);
cont++;
soma = soma + num;
}
} while (num != 0);
// aqui decremento o "cont" que é o do valor "0" que é digitado para sair.
cont--;
DecimalFormat aproximador = new DecimalFormat("0.00");
System.out.println("A soma é " + soma);
System.out.println("A quantidade de numeros digitados é " + cont);
media = soma/cont;
System.out.println("A media é " +aproximador.format(media));
[/code][/quote]
Caramba deu certinho essa lógica por causa de besteira mesmo eu não tava conseguindo, mais uma vez gradeço, sem palavras para agradecer.
Cara, se nao estou enganado, tente as seguintes alteracoes:
import javax.swing.JOptionPane;
public class MediaTres {
public static void main(String[] args) {
int cont = 0;
double media,num = 1, soma = 0;
while (num !=0 ){
String x = JOptionPane.showInputDialog(null, "Digite um numero", "Numero", JOptionPane.QUESTION_MESSAGE);
try{
num = Integer.parseInt(x);
//veja q a condicao aqui tem que ser num > 0 e nao >=0
if (num > 0 && num % 3 == 0){
System.out.println(num);
soma = soma + num;
cont++;
}
}catch (NumberFormatException nfe) {
//fazemos num == 1 para entrar no laco novamente
num = 1;
}
}
System.out.println("A soma é " + soma);
System.out.println("A quantidade de numeros digitados é " + cont);
media = soma/cont;
System.out.println("A media é " +media);
}
}