Ir para conteúdo
Fórum Script Brasil
  • 0

Dificuldades em leitura com comando for


phk1

Pergunta

public class Media_2_vetores {
    public static void main(String[] args) {
        double[] notas = new double [5];
        int[] alunos = new int [50];
        int i,j;
        String opcao;
        Scanner sc = new Scanner(System.in);
        double media = 0, soma = 0,cont = 0;
        String resp = "n";
        
        do {
        for(i = 0;i < alunos.length;i++) {
        System.out.println("Entre com o aluno de nº: ");            
          alunos[i] = sc.nextInt();    
            for(j = 0;notas.length<4;j++) {
                System.out.println("Entre com a " + j + 1  + " ª do aluno: ");
                notas[j] = sc.nextDouble();
                soma = soma + notas[j];
                cont++;
                
                media = soma / cont;
                
                String aproveitamento = " ";
                if (media >= 9 && media <= 10){
                    aproveitamento = "A";
                } else if (media >= 7.5 && media < 9){
                    aproveitamento = "B";
                } else if (media >= 6 && media < 7.5){
                    aproveitamento = "C";
                } else if (media >= 4 && media < 6){
                    aproveitamento = "D";
                } else if (media >= 0 && media < 4){
                    aproveitamento = "E";
                }

                System.out.println("Média: " + media);
                System.out.println("Conceito: " + aproveitamento);

                switch(aproveitamento){
                    case "A":
                    case "B":
                    case "C": System.out.println("APROVADO"); break;
                    case "D":
                    case "E": System.out.println("REPROVADO"); break;  
                    }
              }            
          }
        System.out.print("Deseja Continuar? <s/n>: ");
        opcao = sc.next();
        } while (!opcao.equalsIgnoreCase(resp)); //while ( opcao != 'n'); // só pára se for == 'n'
        sc.close();    
    }
}

 

Prazer. Estou tendo problemas no for para ler alunos e notas. O primeiro for continua, não consigo fazer ele parar e logo a seguir ler o segundo for para entrar com a nota do aluno, o compilador continua a ler o primeiro for.

Entra com o número do aluno e logo a seguir entra com as notas. São 50 alunos e para cada um desses 50 há 4 notas.

Obrigado.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Problema quase resolvido. Problema somente do while que não é lido, não vejo erro nenhum.

public static void main(String[] args) {
        String[] nome_aluno = new String[50];
        double[][] nota_aluno = new double[50][4];
        Scanner sc = new Scanner(System.in);
        int i,j;
        String opcao, resp = "n";        
        double soma = 0;
                
        do {
            
        for(i = 0;i < nome_aluno.length;i++) {
            System.out.println("Insira o nome do aluno: ");            
            nome_aluno[i] = sc.next();    
                for(j = 0; j<4 ;j++) {
                    System.out.println("Entre com o aluno de número: " + i + 1 + " com a " + j + " ª nota.");
                    nota_aluno[i][j] = sc.nextDouble();
                    soma = soma + nota_aluno[i][j];
                }                
                    
                    double media = soma / 4;
                
                    String aproveitamento = " ";
                    if (media >= 9 && media <= 10){
                        aproveitamento = "A";
                    } else if (media >= 7.5 && media < 9){
                        aproveitamento = "B";
                    } else if (media >= 6 && media < 7.5){
                        aproveitamento = "C";
                    } else if (media >= 4 && media < 6){
                        aproveitamento = "D";
                    } else if (media >= 0 && media < 4){
                        aproveitamento = "E";
                    }

                System.out.println("Média: " + media);
                System.out.println("Conceito: " + aproveitamento);

                switch(aproveitamento){
                    case "A":
                    case "B":
                    case "C": System.out.println("APROVADO"); break;
                    case "D":
                    case "E": System.out.println("REPROVADO"); break;  
                    }
        }            
            
        System.out.print("Deseja Continuar? <s/n>: ");
        opcao = sc.next();        
        
        } while (!opcao.equalsIgnoreCase(resp)); //while ( opcao != 'n'); // só pára se for == 'n'        
    }

O while não é lido para encerrar o programa. Porque?

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda não consegui resolver. Na segunda vez que faço para colocar as notas, as notas não são somadas corretamente. Parece que fica lixo na memória, não sei se está somando com o resultado da primeira iteração. 
Por exemplo: 7 + 8 + 9 +8 dá 32, e fiz o debug e a soma está dando 142. Nada a ver. Resolvendo isso e resolvo depois a saída do algoritmo. Obrigado. 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...