Duvida com loop seguido de condicional if [resolvido]

4 respostas
T

Ola pessual torno eu aki com esta mardita dessa lógica.

preciso escrever um programa que receba vaios inteiros do teclado. E no final imprima a média dos numeros multiplos de 3. e para sair digito zero.

vou postar o que fiz mas nao ta rodando legal, sera que poderiam me dar uma força mais uma vez amigos.

package Exercicios;

import javax.swing.*;

import java.text.DecimalFormat;

public class média_tres 
{

	public static void main(String[] args) 
	{   
	        int cont = 0;
			double media,num = 0, soma = 0;
	        while (num!=0)   
	        {   
	            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;    
	            		
	            		

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


}

4 Respostas

gpd38

Seu erro era simples.

/*
 * 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();

flw

WendersonLP

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));
T
WendersonLP:
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));

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.

Abração pessual.

Vini_Fernandes

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

Ate mais

Criado 27 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 4
Participantes 4