Bom dia, preciso de uma ajuda para resolver um exercício, sou novo em programação e meu professor me passou a seguinte questão
Faça um algoritmo que leia dez conjuntos de três valores, o primeiro representando o nome do
aluno o segundo representando a sua altura em centímetros e o terceiro representando o sexo M ou
F.
- Mostre o aluno mais alto da turma, seu nome e altura , independente do sexo;
- Mostre o aluno mais baixo da turma, seu nome e altura, independente do sexo;
- Mostre o aluno do sexo masculino mais alto e seu nome;
- Mostre o aluno do sexo masculino mais baixo e seu nome;
- Mostre a aluna do sexo feminino mais alta e seu nome;
- Mostre a aluna do sexo feminino mais baixa e seu nome;
import javax.swing.JOptionPane;
public class prova {
public static void main(String[] args) {
int altura[] = new int [2];
String nome[] = new String [2];
String sexo[] = new String[2];
int maior = 0, menor = 299, maiorM = 0;
int menorM = 299, maiorF = 0, menorF = 299;
String aux;
for (int i = 0; i < 2; i++) {
aux = JOptionPane.showInputDialog("Nome do "+(i+1)+"º Aluno: ");
nome[i] = aux;
aux = JOptionPane.showInputDialog("Altura do "+(i+1)+"º Aluno: ");
altura[i] = Integer.parseInt(aux);
aux = JOptionPane.showInputDialog("Sexo do "+(i+1)+"º Aluno (M/F): ");
sexo[i] = aux;
}
//aluno mais auto
for (int i = 0; i < 2; i++) {
if(altura[i] > maior) {
maior = altura[i];
}
}
System.out.println("Aluno mais alto é: "+"Com: "+maior);//fim aluno mais alto
//aluno mais baixo
for (int i = 0; i < 2; i++) {
if(altura[i] < menor) {
menor = altura[i];
}
}
System.out.println("Aluno mais Baixo é: "+"Com: "+menor);//fim aluno mais baixo
}}
Dá pra deixar seu código mais organizado, veja:
import javax.swing.JOptionPane;
public class Exemplo {
private class Aluno {
int altura;
String nome;
char sexo;
}
public static void main(String[] args) throws Exception {
Exemplo programa = new Exemplo();
programa.executar();
}
public void executar() {
Aluno[] alunos = cadastrar();
Aluno[] meninos = filtrarPorSexo(alunos, 'M');
Aluno[] meninas = filtrarPorSexo(alunos, 'F');
Aluno alunoMaisAlto = maiorAltura(alunos);
Aluno alunoMaisBaixo = menorAltura(alunos);
Aluno meninoMaisAlto = maiorAltura(meninos);
Aluno meninoMaisBaixo = menorAltura(meninos);
Aluno meninaMaisAlta = maiorAltura(meninas);
Aluno meninaMaisBaixa = menorAltura(meninas);
mostrar("Aluno mais baixo é ", alunoMaisAlto);
mostrar("Aluno mais baixo é ", alunoMaisBaixo);
mostrar("Menino mais alto é ", meninoMaisAlto);
mostrar("Menino mais baixo é ", meninoMaisBaixo);
mostrar("Menina mais alta é ", meninaMaisAlta);
mostrar("Menina mais baixa é ", meninaMaisBaixa);
}
private Aluno[] cadastrar() {
int quantidade = Integer.parseInt(JOptionPane.showInputDialog("Quantos alunos deseja cadastrar? "));
Aluno[] alunos = new Aluno[quantidade];
for (int i = 0; i < quantidade; i++) {
Aluno aluno = new Aluno();
aluno.nome = JOptionPane.showInputDialog("Nome do " + (i + 1) + "º Aluno: ");
aluno.altura = Integer.parseInt(JOptionPane.showInputDialog("Altura do " + (i + 1) + "º Aluno: "));
aluno.sexo = JOptionPane.showInputDialog("Sexo do " + (i + 1) + "º Aluno (M/F): ").toUpperCase().charAt(0);
alunos[i] = aluno;
}
return alunos;
}
private Aluno[] filtrarPorSexo(Aluno[] alunos, char sexo) {
int quantidade = 0;
for (Aluno aluno : alunos) {
if (aluno.sexo == sexo) {
quantidade++;
}
}
Aluno[] filtrados = new Aluno[quantidade];
int posicao = 0;
for (Aluno aluno : alunos) {
if (aluno.sexo == sexo) {
filtrados[posicao] = aluno;
posicao++;
}
}
return filtrados;
}
private Aluno maiorAltura(Aluno[] alunos) {
Aluno aluno = alunos[0];
for (int i = 1; i < alunos.length; i++) {
if (alunos[i].altura > aluno.altura) {
aluno = alunos[i];
}
}
return aluno;
}
private Aluno menorAltura(Aluno[] alunos) {
Aluno aluno = alunos[0];
for (int i = 1; i < alunos.length; i++) {
if (alunos[i].altura < aluno.altura) {
aluno = alunos[i];
}
}
return aluno;
}
private void mostrar(String mensagem, Aluno aluno) {
JOptionPane.showMessageDialog(null, mensagem + aluno.nome + " com " + aluno.altura + "cm");
}
}
Eu dei uma olhada aqui e o código do nosso amigo @staroski está perfeito, porém ele não previu o erro de BIOS (quem é da área sabe)…kkkkkkkkkk…provavelmente estavam digitando a altura com vírgula e o número solicitado é um inteiro, eu dei uma modificada no código para a maneira q eu gosto e mudei a altura para float, prevendo que o cidadão possa acabar digitando a vírgula.
Bom aprendizado para vocês:
{
public class Exemplo {
private List<Aluno> alunos;
private class Aluno implements Serializable {
private static final long serialVersionUID = 6932658991816229114L;
private float altura;
private String nome;
private char sexo;
public Aluno() {
}
public float getAltura() {
return altura;
}
public void setAltura(float altura) {
this.altura = altura;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public char getSexo() {
return sexo;
}
public void setSexo(char sexo) {
this.sexo = sexo;
}
}
public static void main(String[] args) throws Exception {
Exemplo programa = new Exemplo();
programa.executar();
}
public Exemplo() {
this.alunos = new ArrayList();
}
public void executar() {
cadastrar();
List<Aluno> meninos = filtrarPorSexo('M');
List<Aluno> meninas = filtrarPorSexo('F');
Aluno alunoMaisAlto = maiorAltura(alunos);
Aluno alunoMaisBaixo = menorAltura(alunos);
Aluno meninoMaisAlto = maiorAltura(meninos);
Aluno meninoMaisBaixo = menorAltura(meninos);
Aluno meninaMaisAlta = maiorAltura(meninas);
Aluno meninaMaisBaixa = menorAltura(meninas);
mostrar("Aluno mais alto é ", alunoMaisAlto);
mostrar("Aluno mais baixo é ", alunoMaisBaixo);
mostrar("Menino mais alto é ", meninoMaisAlto);
mostrar("Menino mais baixo é ", meninoMaisBaixo);
mostrar("Menina mais alta é ", meninaMaisAlta);
mostrar("Menina mais baixa é ", meninaMaisBaixa);
}
private List<Aluno> cadastrar() {
int quantidade = Integer.parseInt(JOptionPane.showInputDialog("Quantos alunos deseja cadastrar? "));
for (int i = 0; i < quantidade; i++) {
Aluno aluno = new Aluno();
aluno.nome = JOptionPane.showInputDialog("Nome do " + (i + 1) + "º Aluno: ");
String alt = JOptionPane.showInputDialog("Altura do " + (i + 1) + "º Aluno: ");
aluno.altura = Float.parseFloat(alt.replaceAll(",", "."));
aluno.sexo = JOptionPane.showInputDialog("Sexo do " + (i + 1) + "º Aluno (M/F): ").toUpperCase().charAt(0);
alunos.add(aluno);
}
return alunos;
}
private List<Aluno> filtrarPorSexo(char sexo) {
return alunos.stream().filter(al -> Chars.compare(al.getSexo(), sexo) == 0).collect(Collectors.toList());
}
private Aluno maiorAltura(List<Aluno> alunos) {
return alunos.stream().sorted(Comparator.comparing(Aluno::getAltura).reversed()).findFirst().get();
}
private Aluno menorAltura(List<Aluno> alunos) {
return alunos.stream().sorted(Comparator.comparing(Aluno::getAltura)).findFirst().get();
}
private void mostrar(String mensagem, Aluno aluno) {
JOptionPane.showMessageDialog(null, mensagem + aluno.getNome() + " com " + aluno.getAltura() + "cm");
}
}
}