Senhoras/Senhores, boa noite.
A situação do momento é a seguinte: Tenho uma classe “Gabaritos” que possui um array de inteiros “resultados[]” de tamanho “numGabaritos”.
Meu problema está acontecendo ao tentar passar um tamanho para a váriavel “numGabaritos”, que por sua vez, diz o tamanho do array.
Já tentei usar um construtor:
public Gabaritos(int numGabaritos){
this.numGabaritos = numGabaritos;
}
também já tentei passar esse valor por um método set:
public void setNumGabaritos(){
this.numGabaritos = numGabaritos;
}
Acredito que o que esteja acontecendo é o seguinte: o array está sendo inicializado com tamanho [0], se for realmente isso, por que isso acontece? Ele não deveria ser modificado ao chamar o construtor? Qual uma maneira eficaz de se fazer esse tipo de declaração de array?
Obs: Quando eu defino um valor para numGabaritos no corpo da classe, ele cria o array com o tamanho especificado sem problema algum, ex:
private int numGabaritos = 2;
Código completo:
public class Gabaritos {
protected static final char[] GABARITO = new char[]{'A', 'B', 'A', 'C', 'D', 'B', 'A', 'A', 'E', 'B'};
private int numGabaritos = 2;
public int resultados[] = new int [numGabaritos];
//k irá manter atualizado o indice de resultados. resultados[k]
private int k =0;
public Gabaritos(int numGabaritos){
this.numGabaritos = numGabaritos;
}
public void comparaGabarito(char[] gabaritoAluno){
int acertos =0;
for(int i=0; i<GABARITO.length; i++){
if(GABARITO[i] == gabaritoAluno[i])
acertos++;
}
resultados[k] = acertos;
k++;
}
public void printResultados(){
for(int i=0; i<resultados.length; i++)
System.out.println(resultados[i]);
}
}
Classe de teste, contendo o método main:
public class Teste{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int numGabaritos;
System.out.println("Entre com a quantidade de gabaritos que serao corrigidos.");
numGabaritos = input.nextInt();
Gabaritos g1 = new Gabaritos(numGabaritos);
char gabaritoAluno[] = new char[10];
//laco for para pegar a resposta das questoes
for(int i=0; i<numGabaritos; i++){
System.out.println("Entre com as 10 respostas(caracteres A/B/C/D/E separados por um espaco:");
for(int j=0; j<gabaritoAluno.length; j++)
gabaritoAluno[j] = input.next().charAt(0);
g1.comparaGabarito(gabaritoAluno);
}
System.out.println("\n");
g1.printResultados();
}