Problemas com if e else

tenho um metodo que cria as datas de paamento e salva as mesmas no banco junto com o valor e o numero de cada parcela até ai tudo bem ,meu problema esta no bloco do if e else é que a 1 parcela sempre devera ser paga no dia d hj por exemplo dai as outras d 30 em 30 dias dai se é feita o calculo em uma vez,se o num é igual a um no cod da certo mas se eu faço em mais vezes ele calcula 30 dias para 1 pgto =[
o q estou fazndo errado?

[code]try{
resultado = comando.executeQuery(“select valor_entrada,valor_total,parcelas,observacao,valor_parcela,data_pgto from financeiro where rc_aluno=’”+ t2.getText() +"’");
if(resultado.next())
{
JOptionPane.showMessageDialog(null, “Os dados financeiros referentes a este aluno\nja foram cadastrados!”);
}

			else{	
				int num=0;
				if(t7.getText()!=null)
					num=Integer.parseInt(t7.getText());
				String ve[]=new String[num];
				int q=0;
				Object key[]=new Object[ve.length];
				resultado = comando.executeQuery("select numero_parcela from parcelas where qntde_parcelas='"+ t7.getText() +"'");
				while(resultado.next())
				{
					ve[q]=resultado.getString(1);
					q++;
				}

				for(int i=0;i<key.length;i++)
				{
					System.out.println(ve[i]+" pos "+i);
					if(num==1)
					{//a 1 parcela é sempre paga no dia da matricula!!!
						
							Date data = dataAtual.getTime();
							DateFormat formata = DateFormat.getDateInstance();
							resultado1 = formata.format(data);
							key[i]=resultado1;
							System.out.println(key[i]);
						
					}
					else if(num<=2)
					{
						dataAtual.add(GregorianCalendar.DATE, 30);
						Date data2 = dataAtual.getTime();
						DateFormat formata2 = DateFormat.getDateInstance();
						resultado2 = formata2.format(data2);
						key[i]=resultado2;
					}
					...

				for(int i=0;i<ve.length;i++)
					comando.executeUpdate("insert into financeiro (rc_aluno,valor_entrada,valor_total,parcelas,observacao,valor_parcela,data_pgto) values ('" + t2.getText() + "','" + t6.getText() + "','"+t5.getText()+ "','"+ve[i] +"','"+ txt.getText() +"','"+ t8.getText() + "','"+ key[i] + "')" );

				JOptionPane.showMessageDialog(null, "Dados financeiros incluidos com sucesso!! ");
			}

			}  catch( SQLException e1){ //trata os erros SQL

				e1.printStackTrace();
				JOptionPane.showMessageDialog(null, this, "Erro Cmdo SQL " + e1.getMessage(), 0 );

			}[/code]

obg

A partir do primeiro else if() a condição está errada.
Você deve colocar assim:

...
else if(num == 2){//para 2 parcelas
//logica
}
else if(num == 3){//para 3 parcelas
//logica
}
...//assim por diante

Pois, quando você coloca “if(num <= 2)” é o mesmo que codificar

if(num == 1 || num == 2)

hmm
mas tipo se eu fizer do jeito que tu estas me explicando não terei problema ao salvar isso tipo se eu fizer em 2 vezes vai ser salvo a data da parcela 1 e da 2 ou só da 2?
bah obrigada pela ajuda drsmachado!!
=]

drsmachado
tentei fazer do jeito que tu disseste mas salvou as 2 datas para daki a 30 dd um pra 04/03 e outra para 03/04 mas olha se fiz certo

[code]if(num==1)
{//a 1 parcela é sempre paga no dia da matricula!!!

							Date data = dataAtual.getTime();
							DateFormat formata = DateFormat.getDateInstance();
							resultado1 = formata.format(data);
							key[i]=resultado1;
							System.out.println(key[i]);
						
					}
					else if(num==2)
					{
						dataAtual.add(GregorianCalendar.DATE, 30);
						Date data2 = dataAtual.getTime();
						DateFormat formata2 = DateFormat.getDateInstance();
						resultado2 = formata2.format(data2);
						key[i]=resultado2;
					}

…[/code]
é q eu sou bm atrapalhada
=[
obrigada pela ajuda

Então, também é possível separar a parte do primeiro pagamento, mantendo-a fixa para a data atual e, se houver mais parcelas, seguir com tua lógica.
Acho que ficaria mais simples, não?
Assim, não sei se estou sendo claro, tira o if(num == 1) e coloca ele fora (afinal, se for em 1 vez, não altera em nada e se não for, a primeira parcela será paga na data atual, certo?)

if(num == 1){
  //logica para 1 parcela
}else{
  for//segue o codigo
   if(num == 2)
}

hmm
acho que deste jeito fica melhor mesmo drsmachado!
bah obrigada
=]

drsmachado
tentei dakele jeito mas continua calculando 30 dias para o primeiro pgto
=[
e tipo se eu modifico os if’s gera as datas de 90 em 90 dd
=[
e agora?

Oi,

Calcule primeiro o valor da entrada e depois gere as parcelas.

creio que num= (numero de parcelas) certo?
se for o seu problema pode estar na logica ou seja:
se o num(numero de parcelas for > 1 ele nao executa o primeiro if.
se for esse o problema vc pode usar:

if (>=1)
eu li o seu codigo sou novo em java mas trabalho com PLC de maquinas e conheco um pouco de logica.

Z3U5
pior que desta maneira que tu disseste ele executa o primeiro if mas o problema é que ele so executa ele!
tipo cmo posso fazer pra executar ele e os demais if’s?
obg
o cod tinha fikdo

[code]if(num>=1)
{//a 1 parcela é sempre paga no dia da matricula!!!

							Date data = dataAtual.getTime();
							DateFormat formata = DateFormat.getDateInstance();
							resultado1 = formata.format(data);
							key[i]=resultado1;
							System.out.println(key[i]);
						
					}
					else if(num<=2)
					{
						dataAtual.add(GregorianCalendar.DATE, 30);
						Date data2 = dataAtual.getTime();
						DateFormat formata2 = DateFormat.getDateInstance();
						resultado2 = formata2.format(data2);
						key[i]=resultado2;
					}

…[/code]
obg
=]

Como ele terá de executar a tarefa, ao menos uma vez e, esta vez, deve ser registrada a data atual…
O num equivale ao número de parcelas, portanto, ele já está definido quando você entra no for, correto? Creio que o ideal é colocar os outros ifs dentro do primeiro:

if(num > 0){
 Date data = dataAtual.getTime();  
                                 DateFormat formata = DateFormat.getDateInstance();  
                                 resultado1 = formata.format(data);  
                                 key[i]=resultado1;  
                                 System.out.println(key[i]); 
if(num <= 2){
 dataAtual.add(GregorianCalendar.DATE, 30);  
                             Date data2 = dataAtual.getTime();  
                             DateFormat formata2 = DateFormat.getDateInstance();  
                             resultado2 = formata2.format(data2);  
                             key[i]=resultado2; 
}else if (num <= 3){
...

Assim, ele sempre irá considerar que existe 1 parcela (data atual) e, havendo mais de uma, ele passa para o restante dos ifs, sempre verificando se o número de parcelas.

obg drsmachado
=]
vou editar o codigo agora,acredito que deste jeito vai dar certo :lol:

drsmachado
bah aconteceu um problema
tipo agora eu consigo pegar a data atual para primeira parcela,mas todas as outras ficam com a mesma data da primeira=[
fiz algo errado no cod?

[code]if(num>0 )
{

							Date data = dataAtual.getTime();
							DateFormat formata = DateFormat.getDateInstance();
							resultado1 = formata.format(data);
							key[i]=resultado1;
							System.out.println(key[i]);
						
					}
					else if(num<=2)
					{
						dataAtual.add(GregorianCalendar.DATE, 30);
						Date data2 = dataAtual.getTime();
						DateFormat formata2 = DateFormat.getDateInstance();
						resultado2 = formata2.format(data2);
						key[i]=resultado2;
					}

…[/code]
tmbm tentei

[code]if(num>0 && num<=1)
{

							Date data = dataAtual.getTime();
							DateFormat formata = DateFormat.getDateInstance();
							resultado1 = formata.format(data);
							key[i]=resultado1;
							System.out.println(key[i]);
						
					}[/code]

mas dai as datas estavam cmo antes sendo calculadas d 30 em 30 dd
=[
obg

[code] if(num>=1)
{//a 1 parcela é sempre paga no dia da matricula!!!

                            Date data = dataAtual.getTime();   
                            DateFormat formata = DateFormat.getDateInstance();   
                            resultado1 = formata.format(data);   
                            key[i]=resultado1;   
                            System.out.println(key[i]);   
                           
                    }   
                 if(num==2)   
                    {   
                        dataAtual.add(GregorianCalendar.DATE, 30);   
                        Date data2 = dataAtual.getTime();   
                        DateFormat formata2 = DateFormat.getDateInstance();   
                        resultado2 = formata2.format(data2);   
                        key[i]=resultado2;   
                    }   

[/code]
Tenta assim tirei else mudei o primeiro if if(num>=1) e if(num==2)
para 2 parcelas se for em mais parcelas if(num>=2)…if(num>=3) etc.
desculpa ai drsmachado ter invadido.

[quote=Z3U5]
desculpa ai drsmachado ter invadido. [/quote]
Tranquilo. O objetivo é tentar ajudar, se resolver, maravilha.

Paty seu problema foi resolvido?