Calcular/Somar Datas - RESOLVIDO

Ola Pessoal!
estou fazendo um calculo com data mas esta acontecendo o seguinte:

GregorianCalendar vencimento = new GregorianCalendar();
int inteiro;
vencimento.add(Calendar.DAY_OF_MONTH, 10);
System.out.print(vencimento.getTime());

da certinho, faz o cálculo, soma dez dias à data, armazenada em vencimento e imprime corretamente.
porém qdo uso assim:

GregorianCalendar vencimento = new GregorianCalendar();
int inteiro = 10;
vencimento.add(Calendar.DAY_OF_MONTH, inteiro);
System.out.print(vencimento.getTime());

imprime sempre a data atual (data do dia).
O que pode estar acontecendo?

Olá pcjardim…

Tem certesa que imprime a data atual? posta o seu codigo completo, pois talvez vc esteja se confundindo e alterando a data do objeto.
O código que voce postou é o mesmo.

Att

O erro a acontece qdo eu mudo de vencimento.add(Calendar.DAY_OF_MONTH, 10); para vencimento.add(Calendar.DAY_OF_MONTH, inteiro); .
Mas o código completo é:

[code]
package relatorios;

import bd.;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.SQLException;
import javax.swing.
;
import java.awt.;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.table.
;

public class RelPrazos extends JFrame{
private Date data1, data2;

GregorianCalendar data;
GregorianCalendar vencimento = new GregorianCalendar();
String nome, medida;
GregorianCalendar hoje = new GregorianCalendar();
GregorianCalendar c = new GregorianCalendar();    
SimpleDateFormat formatadorBr = new SimpleDateFormat("dd/MM/yyyy");
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

public RelPrazos(MysqlQuery q) throws InstantiationException, ClassNotFoundException, IllegalAccessException, SQLException{
super(“Relatóriorio de Prazos”);
final DefaultTableModel modelo = new DefaultTableModel();
JTable tabelaP = new JTable(modelo);
JTableHeader titulos = tabelaP.getTableHeader();
titulos.setBackground(Color.LIGHT_GRAY);
MysqlQuery q1 = q;

// Cria duas colunas
String nom = "Nome";
String meD = "Medida";
String dtI = "Data Internação";
String ven = "Vencimento";
modelo.addColumn(nom);
modelo.addColumn(meD);
modelo.addColumn(dtI);
modelo.addColumn(ven);

Font font = tabelaP.getFont().deriveFont(Font.BOLD);
tabelaP.getColumn(ven).setCellRenderer(new FontRenderer(font));
tabelaP.getColumn(dtI).setCellRenderer(new FontRenderer(font));
tabelaP.getColumnModel().getColumn(0).setPreferredWidth(370);
tabelaP.getColumnModel().getColumn(1).setPreferredWidth(260);
tabelaP.getColumnModel().getColumn(2).setPreferredWidth(140);
tabelaP.getColumnModel().getColumn(3).setPreferredWidth(140);


  data1 = hoje.getTime();      
  q.open("select * from processos");
  q.last();      
  do{
      String non = q.fieldbyname("codP");
      String med = q.fieldbyname("codM");
      String datInt = q.fieldbyname("dataInt");
      String d1 = datInt;
      String d = d1.substring(8, 10);
      int dia = Integer.parseInt(d);
      String m = d1.substring(5, 7);
      int mes = Integer.parseInt(m);
      String a = d1.substring(0, 4);
      int ano = Integer.parseInt(a);
      data = new GregorianCalendar(ano, (mes - 1), dia); //20/09/2007

      data2 = data.getTime();
      double diffDias = Math.floor((data1.getTime() - data2.getTime()) / 1000.0 / 86400.00);
      double val = diffDias;          

      int inteiro = (int) (val);          
      String inteiroS = Integer.toString(inteiro);

      if (inteiroS.length() > 3);
      {
          inteiroS = Insere(inteiroS);
      }
      double resto = (val - inteiro);
      
      String cond = (inteiroS + " dias de condenção (" + calculaData(data1, data2) + ")");
      vencimento = data;
      System.out.print(vencimento.getTime());
      
      vencimento.add(Calendar.DAY_OF_MONTH, inteiro);
      System.out.println(" <=> " + vencimento.getTime() + " <=> " + inteiro);

      datInt = formataData(datInt);
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/infancia?user=root&password=");
      Statement stmt = (Statement) conn.createStatement();
      String query = "select * from pessoas where codigo = '" + non + "'";
      ResultSet rs = stmt.executeQuery(query);
      while (rs.next()) {
          nome = rs.getString("nome");
      }
      String query1 = "select * from medidas where codigo = '" + med + "'";
      ResultSet rs1 = stmt.executeQuery(query1);
      while (rs1.next()) {
          medida = rs1.getString("medida");
      }

      
      
      modelo.addRow(
              new Object[]{
                nome,
                medida,
                datInt,
                formatadorBr.format(data.getTime())
              }
      );
  }while (q.prev());

tabelaP.setPreferredScrollableViewportSize(new Dimension(700, 450));

Container d = getContentPane();
d.setLayout(new FlowLayout());

JScrollPane scrollPane = new JScrollPane(tabelaP);
d.add(scrollPane);

setSize(730, 520);
setVisible(true);

}
}[/code]

Alguém poderia me ajudar nisto?
obg!

tente assim,setando a data no calendar primeiro

 GregorianCalendar vencimento = new GregorianCalendar(); 
		 vencimento.setTime(new Date());
		 int inteiro = 16; 
		 vencimento.add(Calendar.DAY_OF_MONTH, inteiro);  		
		 System.out.print(vencimento.getTime());
1 curtida

meu amigo se eu fizer assim:

int inteiro = 10;

da certo, porém eu preciso receber o resultado de um cálculo q é este:

double diffDias = Math.floor((data1.getTime() - data2.getTime()) / 1000.0 / 86400.00);
double val = diffDias;
int inteiro = (int) val;

Quando chega nesse linha:

vencimento.add(Calendar.DAY_OF_MONTH, inteiro);

no primeiro caso “inteiro = 10” da certinho, mas da forma que eu preciso ao invés de calcular, somar os dias(inteiro) a data que está em vencimento, vencimento fica com a data atual (do dia)

fiz questão de testar assim:

int inteiro = 20; 
vencimento.add(Calendar.DAY_OF_MONTH, inteiro); 

fez o cálculo corretamente, porém assim:

GregorianCalendar hoje = new GregorianCalendar(); 
GregorianCalendar data = new GregorianCalendar(); 
int dia = 03; 
mes=05; 
ano=2010; 
data1 = hoje.getTime(); 
data = new GregorianCalendar(ano, (mes - 1), dia); 
data2 = data.getTime(); 
double diffDias = Math.floor((data1.getTime() - data2.getTime()) / 1000.0 / 86400.00); 
int inteiro = (int) diffDias; 
vencimento.add(Calendar.DAY_OF_MONTH, inteiro); 

imprimiu a data atual ou seja a data do dia.