Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Bea_99

Java java vetores número e nota netbeans

Recommended Posts

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

 

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×