Não consigo extrair valores de um método

1 resposta
programaçãojava
bbrunoccastro

Bom dia, esse exemplo é para receber alternativas certas como gabarito, e posteriormente receber matricula do aluno, e depois as alternativas escolhidas por ele, no fim deveria ser feito a comparação para se extrair a nota de cada matricula, alguém pode me ajudar, empaquei nisso.

import java.util.Scanner;

public class ExPs2 {

public static void main(String[] args) {

	Scanner entrada = new Scanner(System.in);

	char gabarito[] = new char[2];
	int matricula[] = new int[2];
	char questao[] = new char[2];
	double nota[] = new double[2];

	gabarito(gabarito);
	matriQuestao(matricula, questao, gabarito, nota);
	nota(matricula, questao, gabarito, nota);

}


private static void gabarito(char gabarito[]) {

	Scanner entrada = new Scanner(System.in);

	for (int a=0; a<gabarito.length; a++) {
		System.out.println("Digite a solução da " + (a+1) + "º Questão: ");
		gabarito[a] = entrada.next().charAt(0);
		System.out.println("------------------------------");

		while(!(gabarito[a] == 'a') && !(gabarito[a] == 'b') && !(gabarito[a] == 'c') && !(gabarito[a] == 'd') && !(gabarito[a] == 'e')) {
			System.out.println("Digite a opção Correta (a, b, c, d ou e)");
			gabarito[a] = entrada.next().charAt(0);
			System.out.println("------------------------------");
		}
	}
}



private static void matriQuestao(int matricula[], char questao[], char gabarito[], double nota[]) {

	Scanner entrada = new Scanner(System.in);
	int matricul;

	for (int w=0; w<matricula.length; w++) {
		System.out.println("Digite a matricula do " + (w+1) + "º Aluno: ");
		matricula[w] = entrada.nextInt();
		System.out.println("------------------------------");

		for (int y=0; y<questao.length; y++) {
			System.out.println("Digite a alternativa de número " + (y+1));
			questao[y] = entrada.next().charAt(0);
			System.out.println("------------------------------");

			while(!(questao[y] == 'a') && !(questao[y] == 'b') && !(questao[y] == 'c') && !(questao[y] == 'd') && !(questao[y] == 'e')) {
				System.out.println("Digite a opção Correta (a, b, c, d ou e)");
				questao[y] = entrada.next().charAt(0);
				System.out.println("------------------------------");

				for( int u=0; u<matricula.length; u++) {
					if(gabarito[u] == questao[u]) {
						nota[y]++;

					}
				}
			}
		}
		System.out.println(nota[w]); **//aqui no fim de cada inserção das alternativas dos alunos deveria vir a nota que ele tirou quando comparado ao gabarito preenchido anteriormente.**
	}
}




private static void nota(int matricula[], char questao[], char gabarito[], double nota[]) {

	Scanner entrada = new Scanner(System.in);

	for (int x=0; x<matricula.length; x++) {
		System.out.println("Para a matricula " + matricula[x] + " a nota é: " + nota[x]);
**// E aqui no final deveria mostrar matricula e a nota referente.**
	}
}

}

1 Resposta

I

Eu testei o seu código e fiz algumas melhorias:

1 - Os métodos deixaram de ser estáticos (exceto o main, é claro);
2 - Melhorei a legibilidade do código ao, por exemplo, usar nomes mais significativos para os métodos e variáveis;
3 - Melhorei o prompt, ou seja as mensagens de comunicação com o usuário.

import java.util.Scanner;

public class ExPs2 {
	private char questaoGabarito[] = new char[2];
	private char respostaGabarito[] = new char[2];
	private char alternativaAssinalada[] = new char[2];
	private short contagem = 0;
	private int matriculas[] = new int[2];
	private float notas[] = new float[2];
	private Scanner entrada = new Scanner(System.in);
		
	public static void main(String[] args){
		ExPs2 exps2 = new ExPs2();
		exps2.lerGabarito();
		exps2.lerGabaritoAluno();
		exps2.exibirClassificacao();
		
		exps2.entrada.close();
	}
	
	private void lerGabarito(){
		for(int a = 0; a < questaoGabarito.length; a++) {
			System.out.println("\nQuestões de 1 a 9");
			System.out.print("Questão nº: ");
			questaoGabarito[a] = entrada.next().charAt(0);
			System.out.println("-------------------------------------------");

			while(!(respostaGabarito[a] == 'a') && !(respostaGabarito[a] == 'b') 
				&& !(respostaGabarito[a] == 'c') && !(respostaGabarito[a] == 'd') 
				&& !(respostaGabarito[a] == 'e')){
				System.out.print("Digite a alternativa correta [a, b, c, d ou e]: ");
				respostaGabarito[a] = entrada.next().charAt(0);
				System.out.println("------------------------------------------------");
			}
		}
	}
	
	private void lerGabaritoAluno(){
		char respostaAluno;
		short contador = 1;
		Scanner entrada = new Scanner(System.in);
		
		for(int w = 0; w < matriculas.length; w++) {
			System.out.print("Digite a matrícula do " + (contador++) + "º Aluno: ");
			matriculas[w] = entrada.nextInt();
			System.out.println("------------------------------------------------");

			for(int y = 0; y < matriculas.length; y++){
				/*System.out.print("Digite a matrícula do " + (contador++) + "º Aluno: ");
				matriculas[y] = entrada.nextInt();
				System.out.println("-------------------------------------------");*/
				
				System.out.print("Questão de número " + questaoGabarito[y] + ": ");
				
				while(!(alternativaAssinalada[y] == 'a') && !(alternativaAssinalada[y] == 'b') 
					&& !(alternativaAssinalada[y] == 'c') && !(alternativaAssinalada[y] == 'd') 
					&& !(alternativaAssinalada[y] == 'e')){
					System.out.print("\nAlternativa assinalada [a, b, c, d ou e]: ");
					alternativaAssinalada[y] = entrada.next().charAt(0);
					System.out.println("------------------------------------------------");
				}
			}
			System.out.println("Nota obtida: " + calcularProficiencia()[w] + "\n");
			limparAlternativas();
		}
	}
	
	private void limparAlternativas(){
		for(int i = 0; i < alternativaAssinalada.length; i++)
			alternativaAssinalada[i] = '0';
	}
	
	private float[] calcularProficiencia(){
		short respostaCorreta = 0;
		
		for(int i = 0; i < matriculas.length; i++){
			if(respostaGabarito[i] == alternativaAssinalada[i]){
				respostaCorreta++;
				notas[contagem++] = respostaCorreta;
			}
		}
		return notas;
	}
	
	private void exibirClassificacao(){
		Scanner entrada = new Scanner(System.in);

		for (int x = 0; x < matriculas.length; x++) {
			System.out.println("Para a matrícula " + matriculas[x] + ", a nota é: " + notas[x]);
		}
	}
}

Rodando…

Criado 14 de novembro de 2019
Ultima resposta 14 de nov. de 2019
Respostas 1
Participantes 2