Ir ao conteúdo

Java Fazer um programa que imprima a média aritmética dos números 8, 9 e 7.


Ir à solução Resolvido por Esther_,

Posts recomendados

Postado

Olá pessoal! 

 

Sou iniciante em Java e estou fazendo esse exercício, sem funções nem nada do tipo, coisa simples, mas o resultado não está saindo como espero. 

O enunciado é o seguinte


Fazer um programa que imprima a média aritmética dos números 8, 9 e 7. A média dos
números 4, 5 e 6. A soma das duas médias. A média das médias.

 

/*
Fazer um programa que imprima a média aritmética dos números 8,9 e 7. A média dos
números 4, 5 e 6. A soma das duas médias. A média das médias.
*/

package br.com.exerciciosresolvidos;

import java.util.Scanner;

public class SegundoExercicio {
    
    public static void main(String[] args) {
       
    int n1,n2,n3,primeira_media;
    int n4,n5,n6,segunda_media;
    int soma;
    double resultado;
    
        Scanner ler = new Scanner(System.in);    
        System.out.print("Digite o primeiro número: ");
        n1 = ler.nextInt();
        System.out.print("Digite o segundo número: ");
        n2 = ler.nextInt();
        System.out.print("Digite o terceiro número: ");
        n3 = ler.nextInt();
        
        primeira_media = (n1 + n2 + n3)/3; 
        System.out.println();
        System.out.print(">>> A primeira média é: " +primeira_media);
        System.out.println("\n");               
                          
        
        System.out.print("Digite o quarto número: ");
        n4 = ler.nextInt();
        System.out.print("Digite o quinto número: ");
        n5 = ler.nextInt();
        System.out.print("Digite o sexto número: ");
        n6 = ler.nextInt();
        
        segunda_media = (n4 + n5 + n6)/3;
        System.out.println();
        System.out.println(">>> A segunda média é: " +segunda_media);
             
        soma = primeira_media + segunda_media;
        System.out.println(">>> A soma das médias é: " +soma);
        
        resultado = soma / 2;        
        System.out.println(">>> A média das médias é: " +resultado);     
                                                                                                   
    }                                            
      
}

No final da execução está saindo 6 e não 6.5. Alguém sabe me explicar em qual linha estou errando? 

 

Agradeço desde já! 

  • Solução
Postado

@MppS

 

Olá! O problema ocorre na linha em que é calculada a média das médias. Você está dividindo a soma das médias (variável "soma") por 2, mas a divisão está sendo feita entre dois números inteiros, o que resulta em um número inteiro.
 

Para corrigir esse problema, você pode alterar a declaração da variável "resultado" para "double resultado;", assim como fez com a variável "soma". Dessa forma, o resultado da divisão será um número real e a média das médias será calculada corretamente.
 

Além disso, você pode usar o operador de ponto flutuante na divisão para forçar o resultado a ser um número real, como em "resultado = (double) soma / 2;". Nesse caso, a variável "soma" é convertida para um número real antes da divisão.
 

Aqui está o código corrigido:

 

package br.com.exerciciosresolvidos;

import java.util.Scanner;

public class SegundoExercicio {
    
    public static void main(String[] args) {
       
        int n1,n2,n3,primeira_media;
        int n4,n5,n6,segunda_media;
        int soma;
        double resultado;
    
        Scanner ler = new Scanner(System.in);    
        System.out.print("Digite o primeiro número: ");
        n1 = ler.nextInt();
        System.out.print("Digite o segundo número: ");
        n2 = ler.nextInt();
        System.out.print("Digite o terceiro número: ");
        n3 = ler.nextInt();
        
        primeira_media = (n1 + n2 + n3)/3; 
        System.out.println();
        System.out.print(">>> A primeira média é: " +primeira_media);
        System.out.println("\n");               
                          
        
        System.out.print("Digite o quarto número: ");
        n4 = ler.nextInt();
        System.out.print("Digite o quinto número: ");
        n5 = ler.nextInt();
        System.out.print("Digite o sexto número: ");
        n6 = ler.nextInt();
        
        segunda_media = (n4 + n5 + n6)/3;
        System.out.println();
        System.out.println(">>> A segunda média é: " +segunda_media);
             
        soma = primeira_media + segunda_media;
        System.out.println(">>> A soma das médias é: " +soma);
        
        resultado = (double) soma / 2; // correção aqui
        System.out.println(">>> A média das médias é: " +resultado);     
                                                                                                   
    }                                            
      
}



Poderia fazer o teste para verificar se o código está funcionando corretamente? Caso encontre algum erro, por favor, avise-me aqui.

  • Curtir 2
Postado

@StphBR Olá boa noite! Como vai? 

 

Então eu testei aqui, funcionou certinho agora com essa alteração que falou. No fim do código quando colocou o double, esse double ele está mudando o valor da variável soma para real ? Ou somente mudando o valor do resultado final? Pois lá no início a variável soma continuou como int. Só uma dúvida mesmo, tendo em vista que funcionou agora!

E muito obrigada pela ajuda! 😊

Postado
37 minutos atrás, MppS disse:

@StphBR Olá boa noite! Como vai? 

 

Então eu testei aqui, funcionou certinho agora com essa alteração que falou. No fim do código quando colocou o double, esse double ele está mudando o valor da variável soma para real ? Ou somente mudando o valor do resultado final? Pois lá no início a variável soma continuou como int. Só uma dúvida mesmo, tendo em vista que funcionou agora!

E muito obrigada pela ajuda! 😊

@MppS Ao fazer a conversão do tipo de dados da variável soma para double na linha resultado = (double) soma / 2;, apenas a divisão é feita em ponto flutuante, mas a variável soma continua sendo do tipo int.

O resultado da divisão é armazenado na variável resultado, que foi declarada como double, então o resultado final será do tipo double.

  • Curtir 1
Postado

O (double) esta convertendo o resultado de soma/2 para real antes de coloca-lo na variável "resultado".
Basicamente se você estiver usando um valor que originalmente era inteiro ele vai ter seu resultado do tipo inteiro, mesmo o valor final sendo real, ou você declara "soma" como double para que quando você realizar a conta o resultado mantenha o mesmo tipo do pai ou coloca (double) para realizar a conversão do resultado.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...