Ajuda para encontrar erro!

8 respostas
P
Oie alguem pode me ajudar a encontrar o erro neste codigo!?
public String getRet()
	{
		StringTokenizer kp=new StringTokenizer(tudo,txt);
		List<String>tx=new ArrayList<String>();
		int pos=0;
		while(kp.hasMoreTokens())
		{
			tx.add(kp.nextToken());
			//System.out.println("testando o stgtkr "+tx);
			//System.out.println("elemento da pos "+pos+" é "+tx.get(pos));
			pos++;
		}
		for(int i=0;i<ck.length;i++)
		{	if(ck[i][1]!=null)
			{	((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  					public void actionPerformed(ActionEvent e)//so exibe as 					{System.out.println("dentro da acao do botao");
						for(int i=0;i<ck.length;i++)
						if(((AbstractButton) ck[i][1])==e.getSource())
							System.out.println("antes de hamar o metodo q cria tela d mode");
							crianovatela();//erro so seleciona artes ele n muda o i
					}});
			System.out.println("o elem selecionado "+tx.get(i));
			return tx.get(i);
			}
		}
		
		return "problema";

	}
tipo este metodo nao ta percorrendo o for tipo ele para na primeira posição,eleso pega o elemento da pos 0 e 1 d matriz =[ obrigada

8 Respostas

mews

Esse bloco de código que você nos colou é muito abstrato.

Por ex: A variável “ck” utilizada no FOR não está sendo instanciada em lugar nenhum dentro desse método.

Você pode nos colar a classe inteira para que possamos fazer os testes ou até mesmo debugar ou também nos colar o erro do console(se o erro existir).

Abraços

otaviojava

Tem alguns objetos que não está sendo instanciados.
Faz como o mews e posta a classe.

P

segue a classe

...
	Connection conexao;
	Statement comando;
	ResultSet resultado,resultado1;

	final String labels[] = { "","Ensino Medio", "Ensino Fundamental"};
	final JComboBox comboBox = new JComboBox(labels);
	JComboBox cb = new JComboBox();
	String v[]=new String[13];
	//aqui esta a criação dos itens utilizados naquele metodo
Object ck[][] = new Object[v.length][v.length]; 	
String ret[]=new String[ck.length];
	String r[]=new String[ret.length];
	int x=20;int y1=510;
	Object z=null;

	JButton b[]=new JButton[ck.length];
	Object btn=null;

	int ont=0;String vetor=null,tal=null;
	JCheckBox j[]=new JCheckBox[7];
	String k1[]=new String[j.length];
	int x1=20;int y11=30;
	String txt="#";String tudo=null;

	public Cadastro()//crio um construtor aluno
	{
...
//ação da comobobox
				comboBox.addActionListener (new ActionListener (){
			public void actionPerformed(ActionEvent e)
			{
				try {
					conexao = conecta.conectabanco();
					comando = conexao.createStatement();
				}
				catch(Exception e1) {
					JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
				}

				try{
					int c=0;
					if(comboBox.getSelectedItem().equals("Ensino Medio"))
					{
						c=1;
						resultado = comando.executeQuery("select nome from disciplina where ensino='"+c+"'order by nome");
						int q=0;
						while (resultado.next())
						{ 
							v[q]=resultado.getObject(1).toString();
							q++;
						}

						for(int i=0;i<ck.length;i++)
						{
							if(v[i]!=null)
							{
								ck[i][0]=new JCheckBox(v[i]);
								ck[i][1]=new JButton();
								ck[i][2]=v[i];
								//System.out.println("os elementos de ck[i][2]  sao "+ck[i][2]);
								((Component) ck[i][0]).setBounds(x, y1, 150, 25);
								((Component) ck[i][1]).setBounds(x+160, y1, 10, 10);
								((AbstractButton) ck[i][0]).setSelected(true);((AbstractButton) ck[i][1]).setSelected(true);
								add((Component) ck[i][0]);add((Component) ck[i][1]);
								x+=180;
								requestFocus(true);
								if(i==4 || i==9)
								{
									x=20;
									y1+=30;	
									repaint();
								}

							}
							if(ck[i][1]!=null)
							{
								((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  
									public void actionPerformed(ActionEvent e)
									{
										for(int i=0;i<ck.length;i++)
										{
											if(ck[i][0]!=null && ck[i][1]!=null && ck[i][2]!=null)
											{
												if(((AbstractButton) ck[i][0]).isSelected())
												{	
													//System.out.println("dentro do if q ve c ta selecionado o isselected é "+((AbstractButton) ck[i][0]).isSelected());
													ret[i]=(String) ck[i][2];
													if(i==0)
														tudo=ck[i][2]+txt;
													else
													tudo+=ck[i][2]+txt;
//													System.out.println(" ret "+ret[i]+" txt da check selecionada "+((AbstractButton) ck[i][0]).getText()+"valor da coluna 3 "+ck[i][2]);
//													tal=getRet();
//													System.out.println("getRet "+getRet()+" tal "+tal);

												}

											}
											
										}
										getRet();
										//crianovatela();
									}});
							}
						}
						repaint();


					}

					if(comboBox.getSelectedItem().equals("Ensino Fundamental"))
					{
						c=2;	
						resultado = comando.executeQuery("select nome from disciplina where ensino='"+c+"' order by nome");
						int q=0;
						while (resultado.next())
						{ 
							v[q]=resultado.getObject(1).toString();
							q++;
						}
						for(int i=0;i<ck.length;i++)
						{
							if(v[i]!=null)
							{
								ck[i][0]=new JCheckBox(v[i]);
								ck[i][1]=new JButton();
								ck[i][2]=v[i];

								((Component) ck[i][0]).setBounds(x, y1, 150, 25);
								((Component) ck[i][1]).setBounds(x+160, y1, 10, 10);
								((AbstractButton) ck[i][0]).setSelected(true);((AbstractButton) ck[i][1]).setSelected(true);
								add((Component) ck[i][0]);add((Component) ck[i][1]);
								x+=180;
								requestFocus(true);
								if(i==4 || i==9)
								{
									x=20;
									y1+=30;	
									repaint();
								}

							}
							if(ck[i][1]!=null)
							{
								((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  
									public void actionPerformed(ActionEvent e)
									{
										//System.out.println("antes do for dentro do botao");
										for(int i=0;i<ck.length;i++)
										{
											if(ck[i][0]!=null && ck[i][1]!=null)
											{
												if(((AbstractButton) ck[i][0]).isSelected())
												{	
													//System.out.println("dentro do if q ve c ta selecionado o isselected é "+((AbstractButton) ck[i][0]).isSelected());
													ret[i]=(String) ck[i][2];
													if(i==0)
														tudo=ck[i][2]+txt;
													else
													tudo+=ck[i][2]+txt;
													//System.out.println(" ret "+ret[i]+" txt da check selecionada "+((AbstractButton) ck[i][0]).getText()+"3 coluna "+ck[i][2]);
													//tal=getRet();
													//System.out.println("getRet "+getRet()+" tal "+tal);
												}
											}
										}
								
										getRet();
										for(int i=0;i<ck.length;i++)
										if(ck[i][1]!=null)
										{	((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  //inclui o aluno na turma q n estiver cheia
												public void actionPerformed(ActionEvent e)//so exibe as turmas q ainda podem inserir alunos
												{System.out.println("dentro da acao do botao");
													for(int i=0;i<ck.length;i++)
													if(((AbstractButton) ck[i][1])==e.getSource())
														System.out.println("antes de chamar o metodo q cria tela d mode");
														crianovatela();//erro so seleciona artes ele n muda o i
												}});
										}
										//crianovatela();
									}});
							}
						}
						repaint();



					}
				}
				catch(Exception e1)
				{
					JOptionPane.showMessageDialog(null, "Erro ");
					e1.printStackTrace();
				}

			}});


				setClosable(true);   
		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);   
		setIconifiable(true);   
		setMaximizable(true);   
		setResizable(true); 
		setSize (1000,600);   
		setVisible (true);   

	}
//ação que é executa no botao
	JButton btn1=new JButton("ok");

	public void crianovatela()
	{
		JFrame telinha=new JFrame("Tela de modulos");
		try {
			conexao = conecta.conectabanco();
			comando = conexao.createStatement();
		}
		catch(Exception x) {
			JOptionPane.showMessageDialog(null, "Erro na conexÄo do banco");
		}
		try{

			btn1.setBounds(20, 180, 50, 15);

			System.out.println("dentro do construtor da classe modulos");
			System.out.println("antes do 1 if do construtor da classe modulos o valor de getret é "+getRet());
			if(getRet()!=null)
			{
				vetor=getRet();String er=null;
				System.out.println("antes de fazer a busca no banco o valor de s é "+vetor);
				for(int i=0;i<ret.length;i++)
					if(ret[i]!=null)
						er=ret[i];//tipo c eu fizer deste jeito vai dar arrayindxoutb...pq eu to pegando os modulos de tdas as disciplinas
				System.out.println("valor da var er "+er+" select modulo from disc_modulo where Id_disciplina='"+vetor+"'order by modulo");//ta pegando a ultima pos
				resultado = comando.executeQuery("select modulo from disc_modulo where Id_disciplina='"+vetor+"'order by modulo");
				int q=0;
				System.out.println("valor de ret[i] "+er);
				while (resultado.next())
				{
					k1[q]=resultado.getObject(1).toString();
				///	System.out.println("o resultado da pesquisa no banco "+k1[q]+" na pos "+q);
					q++;
				}
				for(int i1=0;i1<j.length;i1++)
				{

					if(k1[i1]!=null)
					{
						j[i1]=new JCheckBox(k1[i1]);
						j[i1].setBounds(x1, y11, 150, 25);
						j[i1].setSelected(true);
						telinha.add(j[i1]);
						y11+=30;
						if(i1==3 || i1==8)
						{
							x1=20;
							y11+=30;	
							telinha.repaint();

						}
					}

				}


			}
			btn1.addActionListener (new ActionListener (){  
				public void actionPerformed(ActionEvent e)
				{
					try{
						//se o ck d modulo estiver selecionado eu insiro no banco

						resultado = comando.executeQuery("select Id from aluno where nome='"+t0.getText()+"' and data_nascimento='"+t1.getText()+"'");
						resultado.next();
						System.out.println(resultado.getObject(1).toString());
						z=resultado.getObject(1).toString();
						if(z!=null)
							for(int i=0;i<j.length;i++)
								if(j[i]!=null)
									if(j[i].isSelected())//
										for(int i1=0;i1<ret.length;i1++)
											comando.executeUpdate("insert into disciplina_modulo_aluno (modulo,disciplina,rc_aluno) values ('" + j[i].getText() + "','" + ret[i1] + "','" + z + "')" );
						JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
					}
					catch(Exception ji)
					{
						ji.printStackTrace();
					}


				}});
		}
		catch(Exception exce)
		{
			exce.printStackTrace();
		}
		telinha.setLayout(null);
		telinha.add(btn1);
		telinha.setSize(300,250);
		telinha.setVisible(true);     
		telinha.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);     
		telinha.setResizable(true);

	}


}

obrigada
=]

otaviojava

Tem Como você enviar a exceção ?

P
é que não esta executando nenhum erro e não cai em em nenhuma exceção,mas esta errado porque quando eu testo o metodo getret() ele sempre exibe os modulos referentes a artes,que é o primeiro elemento da matriz da coluna zero,tipo o for que tem neste metodo trava no primeiro eu acho que é por causa do return
if(ck[i][1]!=null)
			{	
			((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  //inclui o aluno na turma q n estiver cheia
			
					public void actionPerformed(ActionEvent e)//so exibe as turmas q ainda podem inserir alunos
					{System.out.println("dentro da acao do botao");
						for(int i=0;i<ck.length;i++)
						if(((AbstractButton) ck[i][1])==e.getSource())
							System.out.println("antes de chamar o metodo q cria tela d mode");
							crianovatela();//erro so seleciona artes ele n muda o i
					}});
			System.out.println("o elem selecionado "+tx.get(i));
			return tx.get(i);
			}
por que ele ta denro do if e assim q acha o primeiro item q não é null retorna e para a execução do metodo so que tu sabe alguma maneira que eu possa fazer para retornar os outros elementos da matriz ou que eu possa chamar aquele metodo varias vezes? obg =]
mews

Estou sem muito tempo para olhar o seu código a fundo, mas pelo que eu posso ver estão faltando abrir e fechar {}

Dê uma olhada na minha sugestão
((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  //inclui o aluno na turma q n estiver cheia  

		public void actionPerformed(ActionEvent e)  
		{
			System.out.println("dentro da acao do botao");  

			for(int i=0;i<ck.length;i++)  
			{
				if(((AbstractButton) ck[i][1])==e.getSource())  
				{
					System.out.println("antes de chamar o metodo q cria tela d mode");  
					crianovatela();//erro so seleciona artes ele n muda o i
				}
			}
		}});
P

ok vou tentar
qualquer coisa eu posto de novo!

WellingtonRamos
paty_trind:
é que não esta executando nenhum erro e não cai em em nenhuma exceção,mas esta errado porque quando eu testo o metodo getret() ele sempre exibe os modulos referentes a artes,que é o primeiro elemento da matriz da coluna zero,tipo o for que tem neste metodo trava no primeiro eu acho que é por causa do return
if(ck[i][1]!=null)
			{	
			((AbstractButton) ck[i][1]).addActionListener (new ActionListener (){  //inclui o aluno na turma q n estiver cheia
			
					public void actionPerformed(ActionEvent e)//so exibe as turmas q ainda podem inserir alunos
					{System.out.println("dentro da acao do botao");
						for(int i=0;i<ck.length;i++)
						if(((AbstractButton) ck[i][1])==e.getSource())
							System.out.println("antes de chamar o metodo q cria tela d mode");
							crianovatela();//erro so seleciona artes ele n muda o i
					}});
			System.out.println("o elem selecionado "+tx.get(i));
			return tx.get(i);
			}
por que ele ta denro do if e assim q acha o primeiro item q não é null retorna e para a execução do metodo so que tu sabe alguma maneira que eu possa fazer para retornar os outros elementos da matriz ou que eu possa chamar aquele metodo varias vezes? obg =]
Não sei se entendi bem o problema mas entendo que você quer acumular todos os itens do array q não forem nulos para utilizar em algum outro lugar, certo? Se é isso o que entendi, passe a utilizar um list e adicione os itens nele (na linha onde hoje está o return) e ao fim do loop, retorne a lista.

Outra coisa, você está utilizando StringTokenizer :?: É realmente necessário ou você pode trocar pelo método split() da classe String?

Criado 30 de dezembro de 2010
Ultima resposta 30 de dez. de 2010
Respostas 8
Participantes 4