Show the highest average of all calculated averages

-1

I created an algorithm to calculate the average of a surfer, but he can get as many waves as he wants if he wants to stop the algorithm has to present the highest average of those calculated and pass to the second surfer. Does anyone know how I fix this?

import java.util.Scanner;
public class trabalhosurf {
  public static void main(String[]args) {
   int cod;
   double juiz1,juiz2,juiz3,juiz4,juiz5,soma,media1,media2,menor,maior,surfista1,surfista2,mediafinal1,mediafinal2;
   Scanner ler=new Scanner(System.in);
   do {

       System.out.println("Informe a nota do juiz 1 para o surfista 1");
    juiz1 = ler.nextDouble();
    menor = juiz1;
    maior = juiz1;
    System.out.println("Informe a nota do juiz 2 para o surfista 1");
    juiz2 = ler.nextDouble();
    if (juiz2<menor) {
     menor = juiz2;
     if (juiz2>maior) {
     maior=juiz2;
     }
    }
    System.out.println("Informe a nota do juiz 3 para o surfista 1");
    juiz3 = ler.nextDouble();
    if (juiz3<menor) {
     menor=juiz3;
     if(juiz3>maior) {
     maior=juiz3;
     }
    }
    System.out.println("Informe a nota do juiz 4 para o surfista 1");
    juiz4 = ler.nextDouble();
    if (juiz4<menor) {
      menor=juiz4;
      if (juiz4>maior) {
      maior=juiz4; 
      }
    }
    System.out.println("Informe a nota do juiz 5 para o surfista 1");
    juiz5 = ler.nextDouble();
    if (juiz5<menor) {
     menor=juiz5;
     if (juiz5>maior) {
     maior=juiz5; 
    }
    }
    soma = juiz1+juiz2+juiz3+juiz4+juiz5 - menor - maior;
    media1= soma/3;
    mediafinal1=media1;
    if
    (mediafinal1>media1);{
    mediafinal1=media1;
    }    
    System.out.println("Media da onda do surfista 1 :"+ mediafinal1);
    System.out.println("Deseja repetir o calculo da media do surfista 1?");
    System.out.println("1)sim");
    System.out.println("2)nao");
    cod=ler.nextInt();


   }while(cod!=2);
   System.out.println("Nota final do sufista 1 é " + mediafinal1 ); 
    int codl;

    do {
       System.out.println("Informe a nota do juiz 1 para o surfista 2");
    juiz1 = ler.nextDouble();
    menor = juiz1;
    maior = juiz1;
    System.out.println("Informe a nota do juiz 2 para o surfista 2");
    juiz2 = ler.nextDouble();
    if (juiz2<menor) {
     menor = juiz2;
     if (juiz2>maior) {
     maior=juiz2;
     }
    } 
    System.out.println("Informe a nota do juiz 3 para o surfista 2");
    juiz3 = ler.nextDouble();
    if (juiz3<menor) {
     menor=juiz3;
     if(juiz3>maior) {
     maior=juiz3;
     }
    }
    System.out.println("Informe a nota do juiz 4 para o surfista 2");
    juiz4 = ler.nextDouble();
    if (juiz4<menor) {
      menor=juiz4;
      if (juiz4>maior) {
      maior=juiz4; 
      }
    }
    System.out.println("Informe a nota do juiz 5 para o surfista 2");
    juiz5 = ler.nextDouble();
    if (juiz5<menor) {
     menor=juiz5;
     if (juiz5>maior) {
     maior=juiz5; 
    }
    }
    soma = juiz1+juiz2+juiz3+juiz4+juiz5 - menor - maior;
    media2 = (soma)/3;
    System.out.println("Media da onda do surfista 2 :"+ media2);
    System.out.println("Deseja calcular uma nova media para o surfista 2 ?");
    System.out.println("1)sim");
    System.out.println("2)nao");
    System.out.println("Nota final do sufista 2 é " + media2 ); 
    codl=ler.nextInt(); 
   }while(codl!=2);
    double campeao;



    {
    if (media1>media2) {
   campeao=media1;  
   System.out.println("O vencedor é surfista 1 com nota: "+ campeao);
    }else if (media1<media2){
   campeao=media2;  
   System.out.println("O vencedor é surfista 2 com nota: "+ campeao);
    }else if(media1==media2){
     System.out.println("empatados");
    } 


  }

 }
}
    
asked by anonymous 21.09.2017 / 15:19

2 answers

1

Your main problem is this:

if (juiz3<menor) {
 menor=juiz3;
 if(juiz3>maior) {
 maior=juiz3;
 }
}

What you wanted is this:

if (juiz3 < menor) {
    menor = juiz3;
}
if (juiz3 > maior) {
    maior = juiz3;
}

That is, it was to put a if after the other, not one inside the other.

Your code has a lot of duplicates, which is pretty bad. See the code below that eliminates them. The comments explain what the code does:

import java.util.Scanner;

public class TrabalhoSurf {

    public static void main(String[] args) {

        Scanner ler = new Scanner(System.in);
        int numeroJuizes = 5;
        int numeroSurfistas = 2;

        // Faz tudo isso uma vez para cada surfista.
        for (int surfista = 1; surfista <= numeroSurfistas; surfista++) {

            // Faz quantas vezes forem necessárias enquanto o usuário quiser repetir o cálculo da nota deste surfista.
            s: while (true) {

                // Utilizado para armazenar as notas dos juízes.
                double[] notas = new double[numeroJuizes];

                // Lê as notas dos juízes.
                for (int juiz = 1; juiz <= numeroJuizes; juiz++) {
                    System.out.println("Informe a nota do juiz " + juiz + " para o surfista " + surfista + ".");
                    notas[juiz - 1] = Double.parseDouble(ler.nextLine());
                }

                // Obtém a maior e a menor nota e também a soma das notas.
                double maior = notas[0];
                double menor = notas[0];
                double soma = notas[0];
                for (int juiz = 2; juiz <= numeroJuizes; juiz++) {
                     double nota = notas[juiz - 1];
                     if (nota > maior) maior = nota;
                     if (nota < menor) menor = nota;
                     soma += nota;
                }

                // Calcula a média, descartando a maior e a menor nota.
                double media = (soma - maior - menor) / (numeroJuizes - 2);

                // Mostra a média.
                System.out.println("Media da onda do surfista " + surfista + ": " + media);

                // Prende o usuário num loop até o usuário responder 1 ou 2.
                while (true) {
                    System.out.println("Deseja repetir o calculo da media do surfista " + surfista + "?");
                    System.out.println("1) Sim");
                    System.out.println("2) Nao");

                    // Lê a opção escolhida pelo usuário.
                    String escolha = ler.readLine();

                    if ("1".equals(escolha)) continue s; // Refaz com o mesmo surfista.
                    if ("2".equals(escolha)) break s; // Vai para o próximo surfista, se houver.

                    // Mostra a mensagem de erro. O while garante que o programa insiste.
                    System.out.println("Desculpe, não entendi a sua escolha. Tente novamente.");
                }
            }
        }
    }
}

Anyway, the secret is you always look to delete copied-and-pasted code. Use arrays to store sequences of numbers that have some meaning rather than create a lot of purpose-like variables.

    
21.09.2017 / 16:04
0

If I understand what you want, just create a variable there double maior_media dai assigns:

if(media > maior_media) maior_media = media;

Print this when needed and remember to zero the variable before the next interaction.

    
21.09.2017 / 15:33