GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Alguém sabe como resolver esse problema usando uma estrutura de repetição?

Tags: #<Tag:0x00007f596c8e94b0> #<Tag:0x00007f596c8e9370>

Faça um programa em Java que leia o nome, idade e peso de 5 jogadores
diferentes de um time. Faça de forma correta a classe Jogador para responder a
questão. Calcule e mostre:
a) A quantidade de jogadores com idade < 18.
b) A média das idades dos jogadores
c) A percentagem de jogadores com mais de 80 quilos

OBS.: Tem que ser em duas classes, uma classe jogador com os atributos e uma classe com método main para criar os objetos usando os métodos get e set

Já fez pelo menos a classe Jogador?

1 Curtida

Sim! Fiz a classe Jogador com os atributos e os métodos set e get para cada um deles.

Agora faça um for, de 0 a 5, no seu método main:

for (int i = 0; i < 5; i++) {
     //aqui você vai pedir os dados do jogador usando a classe Scanner
    
}

Se não souber usar a classe Scanner eu passo um exemplo.

Não sei se vc não entendeu muito bem, se eu não soube explicar direito o problema ou se eu não entendi sua resposta. O problema pede pra eu criar um classe jogador(o qual eu fiz como falei) e outra classe para mostrar o itens a, b e c( uma classe com o método main).
Na classe com o método o main eu instanciei o 5 objetos do tipo jogador como pedido no problema e usando o método set, eu dei valores aos atributos citados pelo enunciado sem usar nenhum tipo de loop. Agora eu preciso pegar a 5 idades idades dos 5 jogadores e calcular a media de idades. Minha dúvida é: como eu vou armazenar/usar/calcular a média?
Detalhe: não pode usar arrays(essa é a dificuldade).

No método main:
Jogador j1 = new Jogador();
Jogador j2 = new Jogador();
Jogador j3 = new Jogador();
Jogador j4 = new Jogador();
Jogador j5 = new Jogador();
sets e gets para todos

No seu exercício diz “leia”. Isso geralmente significa receber dados que o usuário digitou no console, por isso a sugestão da classe Scanner.

Isso eu peguei, sei usar a classe. O problema é calcular a media dos 5 objetos sem armazenar em array

int idades = 0;
for (int i = 0; i < 5; i++) {
     //digite a idade
    idades = idades + scanner.nextInt();
}

//média das idades
System.out.println(idades / 5.0);

Não pode usar array, né? E Collections?

Acho que no problema não pede para instanciar 5 objetos do tipo jogador diretamente, mas para ler os dados (nome, idade e peso) de 5 jogadores. Com isso, vc irá obter os dados usando a classe Scanner para, assim, ir criando as instâncias da classe jogador, e poder fazer os cálculos dos itens A, B e C.

Também não diz para não usar loop. Com loop seu código faria mais sentido (até mesmo para o seu aprendizado, pois o uso de loop é amplamente utilizado no dia-a-dia do nosso trabalho).

1 Curtida

Também não

Essa é justamente a minha dúvida: como armazenar os dados e resolver as questões usando um loop e sem usar array?

Se não pode usar array, então ignora minha resposta tb. Nesse caso tu deve declarar todos os jogadores em variáveis separadas para cada um (como tu mencionou que já fez) e ler os dados instanciando cada variável:

DECLARA Jogador j1, j2, j3, j4, j5;
DECLARA nome, idade, peso

LEIA nome, idade, peso
CRIA j1 com os dados lidos (algo assim: "j1 = new Jogador(nome, idade, peso)"

LEIA nome, idade, peso
CRIA j2 com os dados lidos (algo assim: "j2 = new Jogador(nome, idade, peso)"

LEIA nome, idade, peso
CRIA j3 com os dados lidos (algo assim: "j3 = new Jogador(nome, idade, peso)"

LEIA nome, idade, peso
CRIA j4 com os dados lidos (algo assim: "j4 = new Jogador(nome, idade, peso)"

LEIA nome, idade, peso
CRIA j5 com os dados lidos (algo assim: "j5 = new Jogador(nome, idade, peso)"

Com as variáveis dos jogadores instanciados, vc consegue recuperar, por exemplo, todas as idades e fazer a media numa boa.

obs.: Vc pode reaproveitar as variáveis nome, idade e peso para na criação das instâncias de cada jogador (para não precisar ficar criando nome1, nome2, etc.)

obs2.: Se jogar a criação do jogador num método separado, seu código vai ficar bem mais enxuto.

Agora vc entendeu a questão. Mas o ponto é: eu, obrigatoriamente tenho que usar alguma estrutura de repetição e não sei nem onde e nem como usar

Uai, agora ficou a dúvida: vc pode ou não usar estrutura de repetição. Pois a resposta do @RoinujNosde te mostra como usar. Só que vc disse que não pode usar, mas agora está falando que pode. Estou confuso.

Pode. Na verdade é obrigatório o uso, o que não se pode usar é array

como não está armazenado isso em um array ou lista:
Você deve buscar esses valores de cada jogador para isso vc pode na Class Main,
System.out.println ((j1.getPeso() + j2.getPeso () + j3.getPeso ()…etc)/ 5);

vc utiliza o get que vc criou para o peso, ai vc soma todo os pesos e divide pela quantidade de jogador.
obs: na soma escreva os ( ) matemáticamente correto: (a+b)/2

Tenho que usar uma estrutura de repetição obrigatoriamente em algum lugar do código

Média com estrutura de repetição:

//