Mostra o que fizeste e onde tens dúvidas. Colocar um enunciado e esperar que alguem resolva dificilmente vai resultar.
import java.util.Scanner;
public class CompeticaoSalto {
private static String[] nomesAtletas;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int quantidadeAtletas = obterQuantidadeAtletas(scanner);
nomesAtletas = obterNomesAtletas(scanner, quantidadeAtletas);
double[][] saltosAtletas = obterSaltosAtletas(scanner, quantidadeAtletas);
// 2. Mostrar a distância total saltada por todos os atletas
double distanciaTotal = calcularDistanciaTotal(saltosAtletas);
System.out.println("2. distância total saltada:");
System.out.printf("total = %.1f cm\n", distanciaTotal);
// 3. Mostrar a maior distância conseguida em cada um dos três saltos de todos os atletas
double[] maioresDistancias = encontrarMaioresDistancias(saltosAtletas);
System.out.println("3. maior distância global de cada salto:");
for (int i = 0; i < maioresDistancias.length; i++) {
System.out.printf("<salto%d> = %.1f cm\n", i + 1, maioresDistancias[i]);
}
scanner.close();
}
private static int obterQuantidadeAtletas(Scanner scanner) {
System.out.print("Informe a quantidade de atletas: ");
return scanner.nextInt();
}
private static String[] obterNomesAtletas(Scanner scanner, int quantidadeAtletas) {
scanner.nextLine();
String[] nomesAtletas = new String[quantidadeAtletas];
for (int i = 0; i < quantidadeAtletas; i++) {
System.out.print("Informe o nome do atleta " + (i + 1) + ": ");
nomesAtletas[i] = scanner.nextLine();
}
return nomesAtletas;
}
private static double[][] obterSaltosAtletas(Scanner scanner, int quantidadeAtletas) {
double[][] saltosAtletas = new double[quantidadeAtletas][3];
for (int i = 0; i < quantidadeAtletas; i++) {
for (int j = 0; j < 3; j++) {
System.out.printf("Informe a distância do salto %d (em metros) para %s: ", j + 1, nomesAtletas[i]);
saltosAtletas[i][j] = scanner.nextDouble();
}
}
return saltosAtletas;
}
private static double calcularDistanciaTotal(double[][] saltosAtletas) {
double distanciaTotal = 0;
for (double[] saltos : saltosAtletas) {
for (double salto : saltos) {
distanciaTotal += salto;
}
}
return distanciaTotal;
}
private static double[] encontrarMaioresDistancias(double[][] saltosAtletas) {
double[] maioresDistancias = new double[3];
for (int i = 0; i < 3; i++) {
double maiorDistancia = Double.MIN_VALUE;
for (double[] saltos : saltosAtletas) {
if (saltos[i] > maiorDistancia) {
maiorDistancia = saltos[i];
}
}
maioresDistancias[i] = maiorDistancia;
}
return maioresDistancias;
}
}
Estou meio sem ideias para as próximas alíneas
Então, para o ponto 4 tens de encontrar, na tua matriz de saltos, que posições tem todos os saltos = 0, e obter o nome correspondente da lista de nomes.
Para o ponto 5 tens de fazer semelhante ao ponto 2, mas ter 3 somas em vez de uma e, no final, dividir pelo número total de atletas.
Notas:
- Não aprenderam POO? Usar arrays em vez de objectos pode tornar-se mais dificil de entender e programar
- Muitas vezes neste tipo de exercícios o input está num ficheiro e o output é comparado com outro ficheiro. Não sei se é o caso mas, se for, não deves fazer qualquer printf a pedir informação nem qualquer output que não sejam os pretendidos.
Infelizmente não aprendemos, como é que isso poderia facilitar?
Está aprendendo Java sem ser orientado à objetos?
Não faz sentido
Hoje você tem um array com os nomes dos atletas e uma matriz com os saltos dos atletas
Você poderia ter uma lista de Informacao
com objetos da classe abaixo:
class Informacao {
String nomeAtleta;
double salto1;
double salto2;
double salto3;
}
Ficaria bem mais simples.
Ok, percebi. Então nesse caso depois de criar o array, eu crio essa classe com objetos e faço o printf?
package primeiro_arremesso;
import java.util.ArrayList;
import java.util.Scanner;
public class Primeiro_arremessoComArray {
public static void main(String[] args) {
Scanner leia = new Scanner (System.in);
System.out.println("Informe a quantidade de atletas: ");
int quantAtletas = leia.nextInt();
String[] nomeAtleta = new String [quantAtletas];
int[][] saltos = new int[quantAtletas][3];
for(int i=0;i<quantAtletas;i++){
System.out.println("informe o nome do atleta");
nomeAtleta[i]=leia.next();
for(int a=0;a<3;a++){
int e=a+1;
System.out.println("Informe "+e+"º o salto do atleta "+nomeAtleta[i]+":");
saltos[i][a] = leia.nextInt();
}
}
for(int x=0;x<quantAtletas;x++){
int maiorValor=0;
ArrayList<String> atletaComMaiorSalto=new ArrayList<>();
for(int i = 0;i<saltos.length;i++){
for(int j : saltos[i]){
if(j>maiorValor){
maiorValor=j;
atletaComMaiorSalto.clear();
atletaComMaiorSalto.add(nomeAtleta[i]);
}else if(j==maiorValor){
atletaComMaiorSalto.add(nomeAtleta[i]);
}
}
}
System.out.println("----------------------------------------------");
System.out.println("Atleta com o maior salto: "+atletaComMaiorSalto);
int totalAtleta=saltos.length;
int numeroSaltos=saltos[0].length;
for(int salto=0;salto<numeroSaltos;salto++){
int tentativasValidas=0;
for(int atleta=0;atleta<totalAtleta;atleta++){
int valorSalto = saltos[atleta][salto];
if(valorSalto != 0){
tentativasValidas++;
}
}
double percentagemValida=(tentativasValidas/(double)totalAtleta)*100;
System.out.println("Percentagem de tentativas válidas no salto "+(salto+1)+": "+percentagemValida+"%");
}
for(int salto=0;salto<numeroSaltos;salto++){
int maiorDistancia=Integer.MIN_VALUE;
for(int atleta=0;atleta <totalAtleta;atleta++){
int valorSalto=saltos[atleta][salto];
if (valorSalto>maiorDistancia){
maiorDistancia=valorSalto;
}
}
System.out.println("Maior Distância no salto "+(salto+1)+": "+maiorDistancia);
}
int totalDistanciasValidas=0;
double somaDistanciasValidas=0;
for(int atleta=0;atleta<totalAtleta;atleta++){
for(int salto=0;salto <numeroSaltos;salto++){
int valorSalto=saltos[atleta][salto];
if(valorSalto!=0){
somaDistanciasValidas+=valorSalto;
totalDistanciasValidas++;
}
}
}
if(totalDistanciasValidas>0){
double mediaDistanciasValidas=somaDistanciasValidas/totalDistanciasValidas;
System.out.println("Distância média dos saltos válidos na competição: "+mediaDistanciasValidas);
}else{
System.out.println("Nenhum salto válido encontrado.");
}
for(int salto=0;salto<numeroSaltos;salto++){
int somaDistancias=0;
for(int atleta=0;atleta<totalAtleta;atleta++){
int valorSalto = saltos[atleta][salto];
somaDistancias+=valorSalto;
}
double mediaDistancias=somaDistancias/(double)totalAtleta;
System.out.println("Distancia media no salto "+(salto+1)+": "+mediaDistancias);
}
int saltoTot=(saltos[x][0]+saltos[x][1]+saltos[x][2]);
System.out.printf(nomeAtleta[x]+":");
System.out.printf("| "+saltos[x][0]);
System.out.printf("| "+saltos[x][1]);
System.out.printf("| "+saltos[x][2]);
System.out.println("| Salto total: "+saltoTot);
System.out.println("----------------------------------------------");
if(saltos[x][0] ==0 && saltos[x][1]==0 && saltos[x][2]==0){
System.out.println("Participante sem saltos válidos: "+nomeAtleta[x]);
}
}
}
}
Podem verificar por favor, não sei porque não funciona
O que não funciona?
Qual o erro?
Escrevi o código mas não está a compilar, não acho o erro.
Se não compila então tem erro de compilação, qual é o erro?