Ir ao conteúdo

Java Java envolvendo classes e vetores


Ir à solução Resolvido por MATHEUSCDN,

Posts recomendados

Postado

Preciso de uma ajuda no meu tópico 3 e 4, não sei como fazer

 

image.thumb.png.03173ebd5a26e897ce295cf3cfdaf288.png

 

1,2 e 5 já estão feitos

 

1)

 

public class Aluno
{
    private int matricula;
    private String nome;
    private float nota1,nota2 , nota3 , media;
    
    public Aluno (int matricula, String nome,float nota1,float nota2, float nota3, float media)
    { 
      this.matricula=matricula;
      this.nome=nome;
      this.nota1=nota1;
      this.nota2=nota2;
      this.nota3=nota3;
      this.media=media;
    }
    
    public int getMatricula()
    { 
        return matricula;
    }
    
    
    public String getNome()
    { 
        return nome;
    }
    
    
    public float getNota1()
    { 
        return nota1;
    }
    
    public float getNota2()
    { 
        return nota2;
    }
    
    public float getNota3()
    { 
        return nota3;
    }
    
    public float getMedia()
    { 
        media = (nota1 + nota2 + nota3) / 3;
        return media;
    }
    
   
    public void setMatricula(int matricula)
    { 
        this.matricula=matricula;
    }
    
   
    public void setNome(String nome)
    { 
        this.nome=nome;
    }

    public void setNota1(float nota1)
    {   
        this.nota1=nota1;
    }
    
    public void setNota2(float nota2)
    {   
        this.nota2=nota2;
    }
    
    public void setNota3(float nota3)
    {   
        this.nota3=nota3;
    }
    
    public void setMedia(float media)
    {   
        this.media=media;
    }
}

 

2)

public class Disciplina
{
   Aluno vet[];
   int contador;
   
   public Disciplina (int qtdAlunos )//2
   {
       vet = new Aluno[qtdAlunos];
       contador=0;
   }
   
   public void adicionaAluno(Aluno obj)//2
   {
       if (contador < vet.length)
       {
           vet[contador] = obj;
           contador++;
       }
   }

 

5)

public int achaMelhor()//5
    { int i;
      int maiorMatricula=0;
      float maiorMedia=0;
      for (i=0; i < contador; i++)
      {  if (maiorMedia < vet[i].getMedia())
         {  maiorMedia = vet[i].getMedia();
            maiorMatricula = vet[i].getMatricula();
         }   
      }
      return maiorMatricula;
    } 

 

Os que estão feitos estão corretos ? 

Postado
Citação

Os que estão feitos estão corretos ? 

public Aluno (int matricula, String nome,float nota1,float nota2, float nota3, float media)
    { 
      this.matricula=matricula;
      this.nome=nome;
      this.nota1=nota1;
      this.nota2=nota2;
      this.nota3=nota3;
      this.media=media;
    }

Nessa parte do código o exercício diz que 'media' não precisa estar entre os parâmetros (não precisa estar nos parênteses), e o valor dela deve ser 0.

 

Postado

Sobre o exercício 1:

  • Declare uma variável por linha, facilita a leitura.
  • O construtor não precisa receber a média.

Eu faria um código assim:

public class Aluno {

    private int    matricula;
    private String nome;

    private float nota1;
    private float nota2;
    private float nota3;
    private float media;

    public Aluno(int matricula, String nome, float nota1, float nota2, float nota3) {
        this.matricula = matricula;
        this.nome = nome;
        this.nota1 = nota1;
        this.nota2 = nota2;
        this.nota3 = nota3;
        this.media = 0.0F;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }

    public float getMedia() {
        return media;
    }

    public void setMedia(float media) {
        this.media = media;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public float getNota1() {
        return nota1;
    }

    public void setNota1(float nota1) {
        this.nota1 = nota1;
    }

    public float getNota2() {
        return nota2;
    }

    public void setNota2(float nota2) {
        this.nota2 = nota2;
    }

    public float getNota3() {
        return nota3;
    }

    public void setNota3(float nota3) {
        this.nota3 = nota3;
    }
}

 

Sobre o exercício 2:

  • Está tudo certo, apenas adicionaria uma variável e chamaria ela de "capacidade", para evitar de chamar vet.length. Isso facilita a leitura do código, uma vez que "capacidade" faz mais sentido que "vet.length".
public class Disciplina {

    private Aluno[] alunos;
    private int     contador;
    private int     capacidade;

    public Disciplina(int capacidade) {
        this.alunos = new Aluno[capacidade];
        this.contador = 0;
        this.capacidade = capacidade;
    }

    public void adicionaAluno(Aluno aluno) {
        if (contador < capacidade) {
            alunos[contador] = aluno;
            contador += 1;
        } else {
            System.err.println("[ E ]: Não tem espaço no vetor.");
        }
    }

    public Aluno[] getAlunos() {
        return alunos;
    }

    public int getContador() {
        return contador;
    }
}

 

Sobre o exercício 5:

  • Eu usaria um objeto do tipo Aluno para armazenar os dados so melhor aluno.
public int achaMelhor() {
    if (contador <= 0) {
        System.err.println("[ E ]: Não há alunos nessa disciplina.");
        return -1;
    }
        
    Aluno melhor = alunos[0];
        
    for (int i = 0; i < contador; i++) {
        if (alunos[i].getMedia() > melhor.getMedia()) {
            melhor = alunos[i];
        }
    }

    return melhor.getMatricula();
}

 

Sobre o exercício 3:

  • Basta criar um método, que irá percorrer o vetor de alunos, calculando a média de cada um dos alunos.

Sobre o exercício 4:

  • Faça um loop que percorra os alunos e verifica a média deles.
Postado
Em 06/10/2021 às 22:14, AdrianoSiqueira disse:

Sobre o exercício 3:

  • Basta criar um método, que irá percorrer o vetor de alunos, calculando a média de cada um dos alunos.

Sobre o exercício 4:

  • Faça um loop que percorra os alunos e verifica a média deles.

Teria alguma demonstração de como posso fazer isso ?

Em 06/10/2021 às 22:14, AdrianoSiqueira disse:

Sobre o exercício 4:

  • Faça um loop que percorra os alunos e verifica a média deles.

 Fiz isso aqui , está certo ? 

 

public int mostraAprovados()
    {
        for (int i = 0; i < contador; i++) 
        {
            
            if (alunos[i].getMedia() > 7.0) 
            {
              System.out.println("Aluno aprovado com média : "+getMedia());  
            }
            else 
            {
               System.out.println("Aluno reprovado com média: "+getMedia()); 
            }
        }
    }

 

Postado
23 horas atrás, MATHEUSCDN disse:

Fiz isso aqui , está certo ? 

É isso mesmo.

 

23 horas atrás, MATHEUSCDN disse:

Basta criar um método, que irá percorrer o vetor de alunos, calculando a média de cada um dos alunos.

Você sabe como calcula a média? Se sim, basta calcular ela dentro do laço de repetição.

  • Solução
Postado
Em 15/10/2021 às 10:49, AdrianoSiqueira disse:

É isso mesmo.

Problema é que fica falando que eu não declarei esse método, mas nas outras partes tem o .getMedia e mesmo assim não da erro

@AdrianoSiqueira Fiz a 3 assim 

 

public static void main (String arg[]) throws java.io.IOException
    {
        BufferedReader obj = new BufferedReader (new InputStreamReader(System.in));
        int nota1;
        int nota2;
        int nota3;
        String aux;
        float media; 
        int i;
        int contador = 0;
        for(i = 0; i < 3; i++)
        {   
            
            contador++;
            // recebe a 1º nota
            System.out.println("Aluno " + contador + ", digite sua 1ª nota");
            aux = obj.readLine();
            nota1 = Integer.valueOf(aux).intValue();
            
            // recebe a 2º nota
            System.out.println("Aluno " + contador + ", digite sua 2ª nota");
            aux = obj.readLine();
            nota2 = Integer.valueOf(aux).intValue();
            
            // recebe a 3º nota
            System.out.println("Aluno " + contador + ", digite sua 3ª nota");
            aux = obj.readLine();
            nota3 = Integer.valueOf(aux).intValue();
            
            // calcula a média
            media = (nota1 + nota2 + nota3) / 3;
            System.out.println("A média do aluno " + contador + " é " + media);
        }
    }

 

O programa todo 

 

Classe aluno

 

public class Aluno 
{

    private int matricula;
    private String nome;

    private float nota1;
    private float nota2;
    private float nota3;
    private float media;

    public Aluno(int matricula, String nome, float nota1, float nota2, float nota3) 
    {
        this.matricula = matricula;
        this.nome = nome;
        this.nota1 = nota1;
        this.nota2 = nota2;
        this.nota3 = nota3;
        this.media = 0.0F;
    }

    public int getMatricula() 
    {
        return matricula;
    }

    public void setMatricula(int matricula) 
    {
        this.matricula = matricula;
    }

    public float getMedia() 
    {
        return media;
    }

    public void setMedia(float media) 
    {
        this.media = media;
    }

    public String getNome() 
    {
        return nome;
    }

    public void setNome(String nome) 
    {
        this.nome = nome;
    }

    public float getNota1() 
    {
        return nota1;
    }

    public void setNota1(float nota1) 
    {
        this.nota1 = nota1;
    }

    public float getNota2() 
    {
        return nota2;
    }

    public void setNota2(float nota2) 
    {
        this.nota2 = nota2;
    }

    public float getNota3() 
    {
        return nota3;
    }

    public void setNota3(float nota3) 
    {
        this.nota3 = nota3;
    }
}

 

 

Classe disciplina

import java.io.*;
public class Disciplina 
{
    private Aluno[] alunos;
    private int contador;
    private int capacidade;

    public Disciplina(int capacidade) 
    {
        this.alunos = new Aluno[capacidade];
        this.contador = 0;
        this.capacidade = capacidade;
    }

    public void adicionaAluno(Aluno aluno) 
    {
        if (contador < capacidade) 
        {
            alunos[contador] = aluno;
            contador += 1;
        }
    }
    
    public static void main (String arg[]) throws java.io.IOException
    {
        BufferedReader obj = new BufferedReader (new InputStreamReader(System.in));
        int nota1;
        int nota2;
        int nota3;
        String aux;
        float media; 
        int i;
        int j;
        int cont = 0;
        
        for(i = 0; i < 3; i++)
        {   
            
            cont++;
            // recebe a 1º nota
            System.out.println("Aluno " + cont + ", digite sua 1ª nota");
            aux = obj.readLine();
            nota1 = Integer.valueOf(aux).intValue();
            
            // recebe a 2º nota
            System.out.println("Aluno " + cont + ", digite sua 2ª nota");
            aux = obj.readLine();
            nota2 = Integer.valueOf(aux).intValue();
            
            // recebe a 3º nota
            System.out.println("Aluno " + cont + ", digite sua 3ª nota");
            aux = obj.readLine();
            nota3 = Integer.valueOf(aux).intValue();
            
            // calcula a média
            media = (nota1 + nota2 + nota3) / 3;
            System.out.println("A média do aluno " + cont + " é " + media);
        }
        }
    
    public int achaMelhor() 
    {
    
        if (contador <= 0) 
        {
        System.out.println("[ E ]: Não há alunos nessa disciplina.");
        return -1;
        }
        Aluno melhor = alunos[0];
        for (int i = 0; i < contador; i++) 
        {
            if (alunos[i].getMedia() > melhor.getMedia()) 
            {
            melhor = alunos[i];
            }
        }
    return melhor.getMatricula();
    }
    
    public int mostraAprovados()
    {
        for (int i = 0; i < contador; i++) 
        {
            
            if (alunos[i].getMedia() > 7.0) 
            {
              System.out.println("Aluno aprovado com média : "+getMedia());  
            }
            else 
            {
               System.out.println("Aluno reprovado com média: "+getMedia());
            }
        }
    }
    
    public Aluno[] getAlunos() 
    
    {
        return alunos;
    }

    public int getContador() 
    {
        return contador;
    }
    
}

 

Mas segundo o compilador, tem um erro o qual não sei como resolver...

 

image.png.675d099ec3b7b4d0f8bd7b4655713b3c.png

Postado
3 horas atrás, MATHEUSCDN disse:

image.png.675d099ec3b7b4d0f8bd7b4655713b3c.png

Isso acontece porque você não disse de qual objeto deve chamar o getMedia();

 

No seu caso, deveria ficar assim:

alunos[i].getMedia();

 

A questão 3 está errada. Leia de novo o enunciado: "Adicione na classe Disciplina um método calculaMedia [...]". O método deve receber a matrícula por parâmetro, a partir dessa matrícula você deve encontrar o aluno e calcular a média dele.

Postado
2 horas atrás, AdrianoSiqueira disse:

A questão 3 está errada. Leia de novo o enunciado: "Adicione na classe Disciplina um método calculaMedia [...]". O método deve receber a matrícula por parâmetro, a partir dessa matrícula você deve encontrar o aluno e calcular a média dele.

Essa 3 to me embolando dms... Ngm da minha sala conseguiu dar uma luz para ajudar a faze-la

 

2 horas atrás, AdrianoSiqueira disse:

No seu caso, deveria ficar assim:

alunos[i].getMedia();

Aaah entendi !

 

Fiz o que você falou e deu esse erro 

 

image.png.01b1f4107247e00d25f299a389105fa7.png

Postado
46 minutos atrás, MATHEUSCDN disse:

image.png.01b1f4107247e00d25f299a389105fa7.png

Veja a mensagem que seu IDE está mostrando: "Missing return statement", em bom português, "Faltando o comando return". Veja a assinatura do seu método:

public int mostraAprovados()

Seu método espera um retorno do tipo int. Como não foi encontrado, é lançada uma exceção com o erro em questão.

 

De acordo com o enunciado, você não precisa retornar nada nesse método, logo ele deveria ser void:

public void mostraAprovados()

 

 

Sobre a questão 3, parta desse prototipo de método:

public void calculaMedia(int matricula)

 

Postado
23 horas atrás, AdrianoSiqueira disse:

Sobre a questão 3, parta desse prototipo de método:

public void calculaMedia(int matricula)

É... to desde ontem tentando mas não consegui fazer 😓

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!