Problema com while [Resolvido]

7 respostas
T

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.

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

	}

7 Respostas

T

Em vez de while tenta usar do … while

renamed

“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

T

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

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

}

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

C

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

    }
}
nel

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:

int cont=0;
double media;

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

carlaum
Smalltalk

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

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

C

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);
Criado 27 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 7
Participantes 5