Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como fazer uma média no Laço While?


PaoComMiojo

Pergunta

Primeiramente, olá a todos que lerem aqui, sou muito novato na linguagem Java, mas to na busca pra aprender. :D

Estou estudando online, daqui a 2 meses começo aula presencial numa escola aqui perto.

Mas voltando ao assunto do titulo.... é o seguinte, tem um exercício aqui que preciso perguntar ao usuário, quantos alunos tem na turma, e a nota de cada um, nessa parte de a nota de cada um preciso usar While, e no final (creio que fora do While) fazer uma média dessas notas, porem não consigo de jeito algum.... essa foi a maneira que tentei, mas obviamente, não funcionou:

package Exercícios;

//@author PaoComMiojo
import java.util.Scanner;

public class media_da_turma {
    public static void main(String[] args){
        Scanner entrada = new Scanner(System.in);
        int turma,
            nota;

        //primeiro pegar quantidade de 'alunos' na 'turma' total

    System.out.println("Digite quanto alunos tem em sua turma: ");
        turma = entrada.nextInt();
        
        //só agora que defino que 'alunos' é o total da 'turma'

        int alunos=turma;
        
        //pra agora comecar a ir de um em um falando das notas

        while (alunos>=1){
    System.out.printf("Digite a nota do aluno %d: \n", alunos);
    nota = entrada.nextInt();
    alunos--;
        }
        System.out.printf("%d", nota / turma);
        
        
    }

}

unicas funções que conheço até agora é: Laço While, Incremento e Decremento, Operadores de Atribuição, Operadores Lógicos e de Negação, e o básico do básico....

Caso não tenha conseguido me expressar direito, me falem o que não ficou coerente que mudo minhas palavras.
Grato desde já :D :D :D

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Aviso já que Java não é a minha linguagem de eleição pelo que não estou certo de que a sintaxe esteja correcta mas, ainda assim, penso que a lógica é a seguinte:

public static void main(String[] args){
   Scanner entrada = new Scanner(System.in);
   int num_alunos,
       nota,
       soma;

   //primeiro pegar quantidade de 'alunos' na 'turma' total

   System.out.println("Digite quantos alunos tem em sua turma: ");
   num_alunos = entrada.nextInt();

   while (num_alunos >= 1) 
   {
     System.out.printf("Digite a nota do aluno %d: \n", num_alunos);
     nota = entrada.nextInt();
     soma = soma + nota; //somar todas as notas inseridas (media = somatorio de notas/num_alunos)
     num_alunos--;
   }
   System.out.printf("Media de notas = %d", soma / num_alunos);        
}

Eliminei a variável 'turma' porque era redundante. Para fazer a média basta teres uma variável na qual armazenas o número de alunos e depois pedir a nota de cada um (com o ciclo while) para a partir daí calculares a média de um conjunto de notas.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

wootzor, primeiramente muito obrigado pela ajuda... realmente analizei e o "turma" era redundante, mas ainda não rodou o programa, da uma olhada...

quando coloquei "soma = soma + nota" reclamava que "soma" não tinha sido inicializado, então cliquei pra concertar e ele atribuiu "0" à "soma"... mas dae depois disso, quando executei deu erro lá em "soma = soma + nota".... escrevi no codigo o que apareceu.

package Exercícios;

//@author PaoComMiojo
import java.util.Scanner;

public class media_da_turma {
    public static void main(String[] args){
        Scanner entrada = new Scanner(System.in);
        int num_alunos,
            nota,
            soma = 0;
        //primeiro pegar quantidade de 'alunos' na 'turma' total
        
    System.out.println("Digite quanto alunos tem em sua turma: ");
        num_alunos = entrada.nextInt();
    
        while (num_alunos >=1 )
        {
            System.out.printf("Digite a nota do aluno %d: \n", num_alunos);
            nota = entrada.nextInt();
            soma = soma + nota; // Aqui nessa linha apareceu a seguinte mensagem:
                   //soma = > "soma" não é uma variável conhecida no contexto atual.<
            num_alunos--;
        }
      System.out.printf("Média de notas da turma: %d", soma / num_alunos);  
    }
}
/*erro do console:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Exercícios.media_da_turma.main(media_da_turma.java:24)
Java Result: 1
*/

e agora ?? :( :unsure:

Editado por PaoComMiojo
Link para o comentário
Compartilhar em outros sites

  • 0

Foi falha minha. O que acontece é que a variável num_alunos tem de ser um número fixo, logo vamos precisar de uma variável de contagem (i) para utilização dentro do ciclo while:

public static void main (String[] args)
{
	Scanner entrada = new Scanner(System.in);
        int num_alunos = 0,
            i = 1, //contador
            nota = 0,
            soma = 0; 
        //primeiro pegar quantidade de 'alunos' na 'turma' total
        
    	System.out.println("Digite quanto alunos tem em sua turma: ");
        num_alunos = entrada.nextInt();
    	System.out.println(num_alunos);
        
        while (i <= num_alunos)
        {
            System.out.printf("Digite a nota do aluno %d: \n", num_alunos);
            nota = entrada.nextInt();
            soma += nota; 
            i++; //incrementar o contador para ler a próxima nota
        }
        System.out.printf("Média de notas da turma: %d", (soma / num_alunos));
}

Se reparares, no exemplo anterior utilizei por engano a num_alunos como contador, ou seja, quando o ciclo terminava essa variável estava com o valor 0, daí o erro quando na última linha fazia o cálculo de soma/num_alunos ("Divisão por zero").

Editado por wootzor
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, funcionooouu !!! muito obrigadoo =DDDD
maaaaasssss.... agora aconteceu o seguinte, cada vez q coloco a nota do aluno ele repete o mesmo aluno, no caso se respondo q são 10 alunos, ele pede pra digitar sempre a nota do aluno 10.... até q "i = 10" então ele possa fazer a media....

mas então resolvi fácil isso, sabe aquele lance de parecer inútil colocar o "turma = num_alunos" ?? então, não é inútil hehehehe, porque assim eu posso salvar o numero de alunos em outra int, e modificar o num_alunos a vontade.... mas porque raios eu modificaria o num_alunos?? pra poder usar um decremento nele, pra não repetir a impressão "digite nota aluno 10" sempre.... hehehehehehe, resumindo eu fiz uma junção do meu primeiro código com o teu primeiro código e deu certo.... olha como ficou com uns ajustes pra sair decentemente a resposta com virgula e tal =DDDD

package Exercícios;

//@author PaoComMiojo
import java.util.Scanner;

public class media_da_turma {
    public static void main(String[] args){
        Scanner entrada = new Scanner(System.in);
        int num_alunos = 0;
        float nota = 0,
              soma = 0;
        //primeiro pegar quantidade de 'alunos' na 'turma' total
        
    System.out.println("Digite quanto alunos tem em sua turma: ");
        num_alunos = entrada.nextInt();
        float turma = num_alunos;
        
        while (1 <= num_alunos )
        {
            System.out.printf("Digite a nota do aluno %d: \n", num_alunos);
            nota = entrada.nextFloat();
            soma += nota;
            num_alunos--;
        }
      System.out.printf("Média de notas da turma: %.2f \n", soma / turma);  
    }
}

MUITOOO obrigado pela ajuda cara, eu achei q nunca mais ia achar essa resposta, nossa vlw mesmo heheheheheheheh :D :D :D :D :D

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda bem que pude ajudar :D

Nesta linha do meu código, devia ter mandado imprimir a variável i (o contador) e não a num_alunos:

System.out.printf("Digite a nota do aluno %d: \n", num_alunos);

De qualquer forma, independentemente do nome que se der à variável de contagem, o que interessa é que ficou a funcionar :)

Link para o comentário
Compartilhar em outros sites

  • 0

fui responder no celular e quando terminei o texto não tava logado, q raiva dae nem respondi mais hehehehehehehehee...

como não lembro o q escrevi ontem, então, só agradeço de novo wootzor pela paciencia em ajudar iniciantes :D

e como to aprendendo no site, que existem varias formas de se resolver, vai do conhecimento e criatividade de cada um :)

espero poder ajudar outros em breve também, porque o que tu fez é o que mais, "nós" noobs, precisamos... de ajuda =D

grande abraço....

e se algum Admin quiser fechar o post, por mim tudo bem, to 100% satisfeito :lol:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...