Problema com while [Resolvido]

Ola pessual estou com duvida nesse seguinte problema:

elaborar um programa que efetue a leitura sucessiva de valoes numericos e apresenta no final o total do somatorio, a media e o total de valores lidos. O programa deve fazer as leituras dos valores enquanto o usuário estiver fornecendo valores positivos.O programa encerra quando o usuário fornece valores negativos.

[code]package Exercicios;

import javax.swing.*;

public class somatorio_media_valores
{

public static void main(String[] args) 
{
	int num,soma=0;
	
	num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));	
	while(num>=0)
		{
		num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));	
		       System.out.println(num);
		       soma=soma+num;
		       num++;
		}
		System.out.println("A soma é"+soma);
	
	}

}

[/code]

Em vez de while tenta usar do … while

“Odeio professores de Java que ficam passando esses trabalhos de programação estruturada.”

cara, o que você precisa fazer é criar duas variáveis, uma somatório que começa de zero e toda vez que o usuário digitar um número positivo, esse número é incrementado nessa variável, e um contador que vai incrementando a cada interação do while.

no final, crie mais 2 println com esses dados.

Ou não era essa a dúvida? :S

Entao usei o do…while e consegui implementar a soma:

[code]package Exercicios;

import javax.swing.*;

public class somatorio_media_valores
{

public static void main(String[] args) 
{
	int num,soma=0;
	
		
	do{
		{
		num=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero","Numero",JOptionPane.QUESTION_MESSAGE));	
		       soma=soma+num;
		       num++;
		}
	}while(num>0);
	System.out.println("A soma é "+soma);
}

}
[/code]

Pórem ele quer a média também e saber quantos foram os numeros digitados e isso nao sei como fazer.

Manda executar este codigo aqui e ve se é o q vc quer:

import javax.swing.JOptionPane;

/**
 * @author Carlos
 */
public class somatorio_media_valores
{

    public static void main(String[] args)
    {
        int cont = 0, num = 0, soma = 0;
        while (true)
        {
            num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um numero", "Numero", JOptionPane.QUESTION_MESSAGE));
            if (num >= 0)
            {
                System.out.println(num);
                soma = soma + num;
                cont++;
            }
            else
            {
                break;
            }
        }
        System.out.println("A soma é " + soma);
        System.out.println("A quantidade de numeros digitados é " + cont);
        System.out.println("A media é " + soma / cont);

    }
}

Boa tarde.

Não entendi o seu num++, já que é a variavél que guarda o valor digitado não precisa ser incrementada, concorda?
Sobre a média, é simples:

[code]int cont=0;
double media;

do{
//seu código
cont++;
}while(num>0)
media = soma/cont;
//imprime a media como preferir
[/code]
Abraços

[quote]

carlaum
Smalltalk

Membro desde: 27/10/2009 09:16:47
Mensagens: 4
Online [/quote]

Putz cara valew mesmo, rodou direitinho so defini depois um double para média e importei java.text.DecimalFormat, mas ficou perfeito, valew mesmo.

Abraços

Blz!
Eu dei uma testada no meu codigo e vi a media da errado quando tem valores com “,”.
Mas é so cria um variavel double media e fica susse!
Exemplo:

double media;
///while
media = (double)soma / (double)cont;
System.out.println("A media é " + media);