Ir ao conteúdo
  • Cadastre-se

Java Dificuldades em leitura com comando for


phk1

Posts recomendados

package vetores;

import java.util.Scanner;

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

Você está instanciando de forma errada a sua matriz, porque precisa associar as notas à um aluno, eu iria sugerir que você crie uma lista para somente você armazenar os nome dos alunos alunos, e depois criar uma matriz de notas no qual cada linha seria correspondente ao index de alunos e as notas as colunas.

Primeiro que você tá instanciando apenas uma lista de tamanho 5 para notas para vários alunos. enquanto você poderia criar normalmente na matrix 4 colunas.


Outra coisa, instancie as variáveis de soma dentro do loop, senão ele vai pegar o valor da ultima operação.
 

import java.util.Scanner;
public class Main {
    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);
        String opcao = "s";


        for (int i = 0; i < nome_aluno.length; i++) {
            double soma = 0;
            System.out.println("Insira o nome do aluno");
            nome_aluno[i] = sc.next();
            for (int j = 0; j < 4; j++) {
                System.out.println("Insira a nota n" + (j + 1) + " do aluno " + nome_aluno[i]);
                nota_aluno[i][j] = sc.nextDouble();
                soma = soma + nota_aluno[i][j];
            }
            double media = soma / 4;
            System.out.println("media do aluno " + nome_aluno[i] + " é: " + media);
            System.out.print("Deseja Continuar? <s/n>: ");
            opcao = sc.next();
            if (opcao.equalsIgnoreCase("n")) {
                break;
            }
        }
    }
}

 

O seu segundo for nunca vai acontecer por que não tá contemplando a condição:


notas.length<4 nunca vai ser true
porque notas.lenght = 5.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...