Ir ao conteúdo
  • Cadastre-se

Java java vetores número e nota netbeans


Bea_99

Posts recomendados

Preciso de ajuda neste exercício, não estou conseguindo elaborá-lo, está dando erro na hora de calcular a nota :/

Citação

 

ENUNCIADO

Programa tem que ser feito pelo NetBeans...

Faça um programa em Java para corrigir provas de múltipla escolha.

Cada prova tem 5 questões e cada questão vale 1 ponto.

O primeiro conjunto de dados a ser lido é o gabarito da prova.

Os outros serão os números dos alunos e suas respectivas respostas.

Existem 3 alunos matriculados.

Calcule e mostre para cada aluno seu número e sua nota.

Obs. Utilizem estrutura de repetição para obter os dados de cada aluno e para cada aluno verifiquem a resposta com o gabarito (utilizem outra estrutura de repetição)

for(a=0;a<15;a++){

    //repetição alunos

  for(r=0;r<10;r++){

      //repetição notas

  }

}

 

 

Meu código:

package pkg11;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        
        int not=0;
        char gabarito[]  = new char[5];
        char resposta[]  = new char[5];
        int alunos[] = new int [3];
        int nota[] = new int [3];
        
        Scanner leia = new Scanner(System.in);
        for(int x =0; x<5; x++){
        System.out.print("Resposta Questão "+(x+1)+": ");
        gabarito[x] = leia.next().charAt(0);
        }
        
        for(int x =0; x<3; x++){
        System.out.print("\nInforma o numero do aluno: ");
        alunos[x] = leia.nextInt();
        
        for(int a =0; a<5; a++){
        System.out.print("Respostas Aluno "+(x+1)+": ");
        resposta[a] = leia.next().charAt(0);
        if (gabarito[x] == resposta[x]){
        not++;
        }  
        }
        nota[x] = not;
         System.out.print("\n\nAluno "+alunos[x]+" nota "+nota[x]);
        } 
        
        }
    }  

 

Erro:

 

Citação

 

Resposta Questão 1: A
Resposta Questão 2: A
Resposta Questão 3: A
Resposta Questão 4: A
Resposta Questão 5: A

 

Informa o numero do aluno: 1
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Respostas Aluno 1: A
Aluno 1 nota 5 //ok


Informa o numero do aluno: 2
Respostas Aluno 2: A
Respostas Aluno 2: B
Respostas Aluno 2: B
Respostas Aluno 2: B
Respostas Aluno 2: B
Aluno 2 nota 6 //errado


Informa o numero do aluno: 3
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B
Respostas Aluno 3: B

Aluno 3 nota 6 //errado

 

 

Link para o comentário
Compartilhar em outros sites

Bom, eu encontrei dois erros, o primeiro erro está aqui: 

		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[x] == resposta[x]) { //aqui
			not++;
		}
	}

o certo seria:

		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[a] == resposta[a]) { //aqui
			not++;
		}
	}

pois comparando gabarito[x] com resposta[x] você não iria comparar todas as respostas que o usuário informar, pois o "x" só incrementa ao sair desse for das respostas, então o certo seria comparar gabarito[a] com resposta[a], por que "a" incrementa a cada resposta, então aí sim eu compararia a primeira resposta com a primeira do gabarito, e a segunda com a segunda e aí por diante.

 

O segundo erro foi que "not" precisa resetar a cada novo aluno, senão ele vai ficar somando a nota do aluno anterior com o atual aí o resultado final fica errado. Então após imprimir a nota do aluno é só você zerar a nota novamente.

 

nota[x] = not;
System.out.print("\n\nAluno " + alunos[x] + " nota " + nota[x]);
not = 0;

Agora deve ficar tudo certo.

Espero ter ajudado, não sou muito bom com explicações... :s

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 26/10/2017 às 17:42, AntonyBR disse:

Bom, eu encontrei dois erros, o primeiro erro está aqui: 


		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[x] == resposta[x]) { //aqui
			not++;
		}
	}

o certo seria:


		System.out.print("Respostas Aluno " + (x + 1) + ": ");
		resposta[a] = leia.next().charAt(0);
		if (gabarito[a] == resposta[a]) { //aqui
			not++;
		}
	}

pois comparando gabarito[x] com resposta[x] você não iria comparar todas as respostas que o usuário informar, pois o "x" só incrementa ao sair desse for das respostas, então o certo seria comparar gabarito[a] com resposta[a], por que "a" incrementa a cada resposta, então aí sim eu compararia a primeira resposta com a primeira do gabarito, e a segunda com a segunda e aí por diante.

 

O segundo erro foi que "not" precisa resetar a cada novo aluno, senão ele vai ficar somando a nota do aluno anterior com o atual aí o resultado final fica errado. Então após imprimir a nota do aluno é só você zerar a nota novamente.

 


nota[x] = not;
System.out.print("\n\nAluno " + alunos[x] + " nota " + nota[x]);
not = 0;

Agora deve ficar tudo certo.

Espero ter ajudado, não sou muito bom com explicações... :s

 

Obrigada!!

Consegui resolver, tu me ajudou bastante!! S2

  • Haha 1
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...