Tenho um programa de lógica cujo enunciado diz o seguinte:
“O usuário deve informar a quantidade de alunos da turma via teclado, o nome da matéria e a quantidade total de aulas (numérico inteiro positivo) no início do programa. O usuário agora vai informar matrícula, nome, média final e quantidade de faltas (numérico inteiro positivo). O programa deve validar os dados e ao final mostrar o boletim de todos os alunos inseridos com a informação de aprovado ou reprovado. O aluno é considerado APROVADO se tiver a média igual ou superior a 6,0 e no mínimo 75% de presença.”
Consegui escrever o código todo, mas o único problema (e crucial) que resta é validar as matrículas, ou seja, fazer com que não haja matrículas repetidas, e elas estão todas num vetor, sendo necessário verificar todos os números que lá se encontram. Já pesquisei e encontrei umas respostas bem complicadas, no entanto, como fiz todo o programa usando lógica, não busco um método pronto, até porque são complicados de entender. Algo como usar somente o “for” seria bem útil.
Segue o código (sem a comparação de valores):
public static void main(String[] args) {
Scanner scanInt = new Scanner(System.in);
Scanner scanString = new Scanner(System.in);
Scanner scanDouble = new Scanner(System.in);
int cont = 0, quantAulas = 0, quantAlunos = 0, i, faltasMaximo = 0;
String nomeMateria;
System.out.println("Digite a quantidade de alunos:");
while (quantAlunos < 1) {
if (cont > 0) {
System.out.println("Valor inválido; reentre um maior que 0:");
}
quantAlunos = scanInt.nextInt();
cont++;
}
cont = 0;
int alunos[] = new int[quantAlunos];
int matricula[] = new int[quantAlunos];
int quantFaltas[] = new int[quantAlunos];
double mediaFinal[] = new double[quantAlunos];
String nome[] = new String[quantAlunos];
String resultado[] = new String[quantAlunos];
System.out.println("Nome da matéria:");
nomeMateria = scanString.nextLine();
System.out.println("Quantidade de aulas:");
while (quantAulas < 1) {
if (cont > 0) {
System.out.println("Valor inválido; reentre um maior que 0:");
}
quantAulas = scanInt.nextInt();
cont++;
}
faltasMaximo = quantAulas / 4;
for (i = 0; i < quantAlunos; i++) {
cont = 0;
System.out.println("Informe o número de matrícula do " + (i + 1) + "º aluno:");
while (matricula[i] < 1) {
if (cont > 0) {
System.out.println("Valor inválido; reentre um maior que 0:");
}
matricula[i] = scanInt.nextInt();
cont++;
}
cont = 0;
System.out.println("Agora digite o nome do " + (i + 1) + "º aluno:");
nome[i] = scanString.nextLine();
System.out.println("Média final:");
mediaFinal[i] = scanDouble.nextDouble();
while (mediaFinal[i] < 0 || mediaFinal[i] > 10) {
System.out.println("Valor inválido; reentre um entre 0 e 10:");
mediaFinal[i] = scanDouble.nextDouble();
}
System.out.println("Quantidade de faltas:");
quantFaltas[i] = scanInt.nextInt();
while (quantFaltas[i] < 0) {
System.out.println("Valor inválido; reentre um maior ou igual a 0:");
quantFaltas[i] = scanInt.nextInt();
}
if (quantFaltas[i] <= faltasMaximo) {
if (mediaFinal[i] >= 6) {
resultado[i] = "Aprovado";
} else {
resultado[i] = "Reprovado por nota";
}
} else {
resultado[i] = "Reprovado por faltas";
}
}
scanInt.close();
scanString.close();
scanDouble.close();
for (i = 0; i < alunos.length; i++) {
System.out.println("\nInformações do " + (i + 1) + "º aluno:\n Matrícula: " + matricula[i] + "\n Nome: "
+ nome[i] + "\n Média Final: " + mediaFinal[i] + "\n Faltas: " + quantFaltas[i] + "\n Situação: "
+ resultado[i] + " em " + nomeMateria);
}