Registro Java; exercício; DÚVIDA

Olá, pessoal. Estou precisando de uma ajuda nesse exercício. As instruções estão a baixo. Minha dificuldade é em realizar a exigência da letra c). Gostaria de dicas sobre o que modificar.:sweat_smile:
/Crie uma estrutura representando os alunos de uma disciplina.
A estrutura deve conter o nome do aluno, polo, nota da AO01, nota da AO02, nota da AP01
e a nota da N1. Desenvolva um programa que:
a) Para cada aluno, calcule a nota da N1, armazene no registro de cada aluno para os
alunos e mostra a N1 calculada;
b) Permita ao usuário entrar com os dados de 5 alunos.
c) Mostre o polo do aluno com maior nota na AO01.
d) Encontre a média geral da N1.
/

      private static class Dados{
         String nome;
         String polo;
         
         float AO01;
         float AO02;
         float AP01;
         
         
      }

      public static void main (String args[]){
      
      final int tamanho = 5;
      
      Dados vet[] = new Dados[tamanho]; 
          
       Scanner e = new Scanner (System.in); 
     
      int i;
      float soma = 0, media;
      float N1;
      float menor, maior;
      String nome_maior;
      String polo;
      
      for(i=0; i<tamanho; i++) {
         vet[i] = new Dados();
         vet[i].nome="";//vazia; .'nome do campo'
         vet[i].AO01 = 0;
         vet[i].AO02 = 0;
         vet[i].AP01 = 0;
         vet[i].polo="";
      }
      
      for(i=0; i<tamanho; i++){
         System.out.println("Dados da pessoa "+i);
         System.out.println("Digite o nome: ");
         e = new Scanner(System.in);
         vet[i].nome = e.nextLine();      
                 
         System.out.println("Digite a nota da AO01: ");
         vet[i].AO01 = e.nextFloat();
         
         
         System.out.println("Digite a nota da AO02: ");
         vet[i].AO02 = e.nextFloat();
         
         
         System.out.println("Digite a nota da AP02: ");
         vet[i].AP01 = e.nextFloat();
                 
         e = new Scanner(System.in);
         System.out.println("Digite o polo: ");
         vet[i].polo = e.nextLine();
      
      System.out.println("Dados cadastrados com sucesso!\n");
      }
     
       
      for(i=0; i<tamanho; i++){
       N1 = (vet[i].AO01 + vet[i].AO02 + vet[i].AP01  )/ 3;

      soma = soma + N1;
      
      }
      media = soma/tamanho;
      System.out.println("A média das notas N1 cadastradas é: "+media);
     
      menor = vet[0].AO01;
      maior = vet[0].AO01;
      nome_maior = vet[0].nome;
      polo = vet[0].polo;

      
      for(i=0; i<tamanho; i++){
         if(vet[i].AO01 < menor){
            
         }
         if(vet[i].AO01 > maior){
            maior = vet[i].AO01;
            nome_maior = vet[i].nome;

         }
        }
      
      System.out.println("Nome da pessoa com a maior nota na AO01: "+nome_maior+ "; Polo: " +polo);
      
     }
    }

Procure quem tem a maior nota AO01 e quando você fizer isso você vai ter a localização do mesmo no vetor, por cada aluno guardar o mesmo números nas diferentes listas.

Mas minha dificuldade está sendo fazer exatamente isso :sweat_smile:

Olha a situação. Agora não roda a última parte :confused:

          private static class Dados{
             String nome;
             String polo;
             
             float AO01;
             float AO02;
             float AP01;
             
             
          }

          public static void main (String args[]){
          
          final int tamanho = 2;
          
          Dados vet[] = new Dados[tamanho]; 
              
          Scanner e = new Scanner (System.in);     
          int i;
          float soma = 0, media;
          float N1;
          float menor, maior;
          String nomeNota;
          float menorNota;
          String polo;
          float maiorNota;
          
                
          for(i=0; i<tamanho; i++){
             vet[i] = new Dados();
             vet[i].nome="";
             vet[i].AO01 = 0;
             vet[i].AO02 = 0;
             vet[i].AP01 = 0;
             vet[i].polo="";
          }
          
          for(i=0; i<tamanho; i++){
             System.out.println("Dados da pessoa "+i);
             System.out.println("Digite o nome: ");
             e = new Scanner(System.in);
             vet[i].nome = e.nextLine();
          
                     
             System.out.println("Digite a nota da AO01: ");
             vet[i].AO01 = e.nextFloat();
             
             
             System.out.println("Digite a nota da AO02: ");
             vet[i].AO02 = e.nextFloat();
             
             
             System.out.println("Digite a nota da AP02: ");
             vet[i].AP01 = e.nextFloat();
                     
             e = new Scanner(System.in);
             System.out.println("Digite o polo: ");
             vet[i].polo = e.nextLine();
          
          System.out.println("Dados cadastrados com sucesso!\n");
          }
         
           
          for(i=0; i<tamanho; i++){
           N1 = (vet[i].AO01 + vet[i].AO02 + vet[i].AP01  )/ 3;

          soma = soma + N1;
          
          }
          media = soma/tamanho;
          System.out.println("A média das notas N1 cadastradas é: "+media);
       
          maiorNota = vet[0].AO01;// **NÃO EXECUTA A PARTIR DAQUI!**
          nomeNota = vet[0].nome;
          menorNota = vet[0].AO01;
                
          for(i=0; i<tamanho; i++){
             if(vet[i].AO01 < menorNota){
             menorNota = vet[i].AO01;
             if(vet[i].AO01 > maiorNota){
             maiorNota =vet[i].AO01 ; 
             nomeNota = vet[i].nome;
             System.out.println("A maior nota AO01 eh: "+maiorNota+" do aluno "+nomeNota);
        
              }
       
           }
        } 
      }
     }

Eu fiz com base no seu e cheguei nesse código funcional

	public static void main(String args[]) {

		final int tamanho = 2;

		Dados vet[] = new Dados[tamanho];

		Scanner e = new Scanner(System.in);
		int i;
		float soma = 0, media;
		float N1;
		float menor, maior;
		String nomeNota = "";
		float menorNota = 10;
		String polo;
		float maiorNota = 0;

		for (i = 0; i < tamanho; i++) {
			vet[i] = new Dados();
			vet[i].nome = "";
			vet[i].AO01 = 0;
			vet[i].AO02 = 0;
			vet[i].AP01 = 0;
			vet[i].polo = "";
		}

		for (i = 0; i < tamanho; i++) {
			System.out.println("Dados da pessoa " + (i + 1));
			System.out.println("Digite o nome: ");
			e = new Scanner(System.in);
			vet[i].nome = e.nextLine();

			System.out.println("Digite a nota da AO01: ");
			vet[i].AO01 = e.nextFloat();

			System.out.println("Digite a nota da AO02: ");
			vet[i].AO02 = e.nextFloat();

			System.out.println("Digite a nota da AP02: ");
			vet[i].AP01 = e.nextFloat();

			e = new Scanner(System.in);
			System.out.println("Digite o polo: ");
			vet[i].polo = e.nextLine();

			System.out.println("Dados cadastrados com sucesso!\n");
		}

//		vet[0].nome = "nome1";
//		vet[0].AO01 = 10;
//		vet[0].AO02 = 10;
//		vet[0].AP01 = 6;
//		vet[0].polo = "asd";
//
//		vet[1].nome = "nome2";
//		vet[1].AO01 = 8;
//		vet[1].AO02 = 5;
//		vet[1].AP01 = 1;
//		vet[1].polo = "dsa";

		for (i = 0; i < tamanho; i++) {
			N1 = (vet[i].AO01 + vet[i].AO02 + vet[i].AP01) / 3;

			soma = soma + N1;

		}
		media = soma / tamanho;
		System.out.println("A média das notas N1 cadastradas é: " + media);

		// Maior nota e Nome
		for (int a = 0; a < tamanho; a++) {

			if (vet[a].AO01 > maiorNota) {
				maiorNota = vet[a].AO01;
				nomeNota = vet[a].nome;
			}
		}

		System.out.println(maiorNota);
		System.out.println(nomeNota);
}

O que eu fiz:

  • Inicializei as variáveis da maior nota e do nome
  • Com a maior nota sendo 0, qualquer valor maior que o mesmo será adicionado na variável e como naquele instante que tenho o “número” da pessoa, já posso pegar o número dela apartir do indice.
1 curtida

:scream: claro como a água! Obrigada!