Olá!
Não sei se esta é uma dúvida básica ou avançada, mas lá vai…
Fiz uma classe com os seguintes atributos e construtor:
Disciplina préRequisitos[];
Disciplina pósRequisitos[];
String nome;
static BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
private static int tamPre;
private static int tamPos;
Disciplina(String n, int tpre, int tpos) {
nome = n;
tamPre = tpre;
tamPos = tpos;
if (tpre > 0) //no decorrer da classe isso faz sentido
préRequisitos = new Disciplina[tpre];
if (tpos > 0)//no decorrer da classe isso faz sentido
pósRequisitos = new Disciplina[tpos];
}
E com o seguinte método, que é onde está havendo problemas:
private void definirRequisitos (boolean op) {
String n = "";
int tpe;
int tpo;
try {
if (op) {
for (int ind=0; ind<tamPre; ind++) {
System.out.println("Atributo 1 "+(ind+1)"); n = entrada.readLine();
if (n.equals("*")) {
tamPre = ind+1;
break;
}
System.out.println("sub-atributo1 de "+n+": ");
tpe = Integer.parseInt(entrada.readLine());
System.out.println("sub-atributo2 de "+n+": ");
tpo = Integer.parseInt(entrada.readLine());
préRequisitos[ind] = new Disciplina(n, tpe, tpo);
}
}
else {
//o mesmo é feito, só que com pósRequisitos[]
}
}
catch (Exception e) {
System.out.println("Erro ao ler do teclado!");
}
}
Aí, o que acontece? Os valores iniciais de tamPre/tamPos, da classe instanciada no aplicativo, que são usados por outro método da própria classe, esses atributos assumes os valores tpe/tpo (é exatamente isso que acontece, eu já verifiquei dando um System.out.println sobre esses atributos).
É isso. Alguém saberia me indicar uma solução para esse problema, sem que eu precisasse alterar toda a idéia implícita.
Desde já agradeço!