Jump to content
Fórum Script Brasil
  • 0

Dificuldades em leitura com comando for


Question

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 to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149195
    • Total Posts
      645461
×
×
  • Create New...