Executa codigo do if mas depois da nullpointerexception[resolvido]
13 respostas
P
paty_trind
ola,
tenho um painel que crio apos fazer uma pesquisa no banco de dados até ai tudo bem ele pesquiso e eu consigo adicionar o resultado na tela mas apos isto ocorre este erro
try{intq=0;intx=30;inty=20;JPanelpanel=newJPanel();panel.setBounds(y,270,500,200);panel.setBackground(Color.cyan);intmaior=0,num1=0;System.out.println("select parcelas from financeiro where rc_aluno='"+t2.getText()+"'");resultado=comando.executeQuery("select parcelas from financeiro where rc_aluno='"+t2.getText()+"'");while(resultado.next()){l[q]=newJLabel(resultado.getObject(1).toString());q++;}for(inti=0;i<l.length;i++){if(l[i].getText()!=null)//o erro aponta para esta linha{num1=Integer.parseInt(l[i].getText());if(maior<num1){maior=num1;System.out.println("o maior é "+maior+" num1 é "+num1);l[i].setBounds(20,x,120,25);panel.add(l[i]);tela.add(panel);repaint();x+=30;}}}System.out.println("fora do if\n o maior é "+maior+" num1 é "+num1);//ver qts parcelas tm dai d acordo com este num sao criados as caixas d txt no painel//depois add na tela}catch(SQLExceptioner){er.printStackTrace();}}
alguém pode me ajudar a encontrar o erro?
obrigada
É mais provável que seja uma posição específica. Senão já daria erro no while() anterior.
P
paty_trind
ola Stormqueen1990,
fiz o print como tu disseste antes do if e apareceu os mesmos valores que são exibidos dentro do laço do if
o print ficou assim
antes do if 1
antes do if 2
antes do if 3
antes do if 4
antes do if 5
e ta dando nullpointerexception na mesma linha =[
P
paty_trind
drsmachado,
eu instanciei o array de JLabel,
=[
só que o tamanho dele é maior que o resultado que estou pegando do banco tipo o tamanho do vetor l é 12 enquanto eu pego do banco 5 resultados da minha pesquisa,é por isto que esta dando erro?
é q eu criei o vetor deste tamanho porque é o maximo de resultados que eu posso ter
drsmachado
Sim, é possível.
Você chama o método “getText()”.
Tente colocar :
if(l[i]!=null){if(l[i].getText()!=null){
P
paty_trind
gente modifiquei o seguinte
while(resultado.next())
{
l[q]=new JLabel(resultado.getObject(1).toString());
q++;
}
System.out.println(q);
for(int i=0;i<q;i++)
{...}
agora eu percorro so as posições preenchidas do meu vetor não esta dando mais akele erro mas sera que isto nao me trara outros problemas no codigo depois?
P
paty_trind
drsmachado
vou tentar do jeito que tu disseste com 2 if’s
=]
drsmachado
Era uma alternativa.
Outra sugestão, seria utilizar um outro tipo de colection, talvez uma lista, suporta objetos e você consegue iterar sobre ela com mais facilidade.
Acredito que até um map seria interessantes.
Outra solução que evitaria 2 ifs seria ter um contador dentro do while, e no for tu iterar só até o valor do índice ser menor que o contador.
Ou usar uma collection como o drsmachado disse.