Boa noite galera. Estou num curso de java faz 1 mês apenas. Ao fazer uma questão, meu laço fica num loop infinito após a terceira vez.
O meu código está incompleto e já descobri uma outra forma de executá-lo, mas gostaria de saber o que está impedindo que esta minha lógica seja bem executada.
Depois da terceira vez cadastrando Alunos, parece que não entra no “if(contPessoas > 0)” e fica pedindo o nome do Aluno infinitamente.
PS: Eu só quero entender o porquê da minha lógica não estar sendo executada com sucesso, não outro modo de executar esse code. Valeu!
package exercicios;
import javax.swing.JOptionPane;
public class Ex08 {
public static void main(String[] args) {
// Vetores String[][] dados = new String[30][4]; Object[] sexo = { "Homem", "Mulher" }; // Variáveis int menuPrincipal = 0; String nome = ""; double nota1 = 0; double nota2 = 0; double nota3 = 0; double media = 0; // Validadores boolean validaNome = false; boolean validaNota1 = false; boolean validaNota2 = false; boolean validaNota3 = false; // Contadores int contPessoas = 0; double homem = 0; double mulher = 0; // Menu String menu = "1) Cadastrar Alunos"; menu += "\n2) Excluir Alunos"; menu += "\n3) Estatísticas"; menu += "\n4) Sair do Sistema"; while (menuPrincipal != 4) { menuPrincipal = Integer.parseInt(JOptionPane.showInputDialog(menu)); if (menuPrincipal == 1) { for (int i = 0; i < 30; i++) { if (dados[i][0] == null) { validaNome = false; while (validaNome == false) { nome = JOptionPane.showInputDialog("Qual o nome do aluno?"); if (contPessoas > 0) { for (int i2 = i - 1; i2 == 0; i2--) { if (nome.equals(dados[i2][0])) { JOptionPane.showMessageDialog(null, "Nome repetido."); validaNome = false; break; } else { validaNome = true; } } }else{ validaNome = true; } if(validaNome == true){ dados[i][0] = nome; } } dados[i][1] = (String) JOptionPane.showInputDialog(null, "Qual é o seu sexo?", "", JOptionPane.PLAIN_MESSAGE, null, sexo, ""); if (dados[i][1].equals("Homem")) { homem++; } else { mulher++; } try { validaNota1 = false; while (validaNota1 == false) { nota1 = Double.parseDouble(JOptionPane.showInputDialog("Qual é a primeira nota?")); if ((nota1 >= 0) && (nota1 <= 10)) { validaNota1 = true; }else{ JOptionPane.showMessageDialog(null, "Nota inválida."); } } validaNota2 = false; while (validaNota2 == false) { nota2 = Double.parseDouble(JOptionPane.showInputDialog("Qual é a segunda nota?")); if ((nota2 >= 0) && (nota2 <= 10)) { validaNota2 = true; }else{ JOptionPane.showMessageDialog(null, "Nota inválida."); } } validaNota3 = false; while (validaNota3 == false) { nota3 = Double.parseDouble(JOptionPane.showInputDialog("Qual a terceira nota?")); if ((nota3 >= 0) && (nota3 <= 10)) { validaNota3 = true; }else{ JOptionPane.showMessageDialog(null, "Nota inválida."); } } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Informação inválida."); } media = (nota1 + nota2 + nota3) / 3; dados[i][2] = String.valueOf(String.format("%.2f", media)); if (media >= 7) { dados[i][3] = "Aprovado!"; } else if (media >= 5) { dados[i][3] = "Em exame."; } else { dados[i][3] = "Reprovado."; } contPessoas++; break; } } } else if (menuPrincipal == 2) { } }
}
}