Jump to content

Recommended Posts

Posted

Ola.

Qual é o formato de introução de uma data pertencente a esta classe (quero fazer uma instancia desta classe), ja pus 2009-05-10, ja pus 2009/05/10 e da-me sempre o erro found int but expected java.util.GregorianCalendar.

Sei que esta duvida deve ser basica mas agradecia que me ajudassem.

Posted

Penso que tens de indicar os campos um a um.

GregorianCalendar data = new GregorianCalendar();
data.set(GregorianCalendar.YEAR,2009);
data.set(GregorianCalender.MONTH,05);
data.set(GregorianCalendar.DAY_OF_MONTH,10);
Posted

Estás a tentar introduzir esse valor onde?

Dependendo de como estás a criar o código podes ter já a data que precisas, o calendário quando é criado usando o construtor sem argumentos fica com a data do sistema na altura da instanciação, ou podes usar um dos vários construtores que ter permite especificar os valores, não precisas criar o calendário e depois ir campo a campo colocar o valor.

Se pretende alterar a data de um calendário que já está criado, então podes usar o método que o Baderous te indicou, embora possas também usar o setDate que aceita o valor da data como um long.

Posted

Eu tenho uma classe que precisa de usar data, preciso registar uma data inicial por isso crei uma variavel de instancia "private GregorianCalendar dataInicio;"

A ideia é ao criar uma instancia da classe principal lhe fornecer a dataInicio, so que, como ja referi ja tentei por 2009/05/10 e também 2009-05-10 e da-me sempre o erro que referi.

Deve haver uma maneira de alterar tudo junto, penso eu.

Eu sei que se calhar dava para criar um metodo que recebe-se como parametros o dia, mes e ano e depois usaria o metodo da api "void set(int campo, int valor)", mas a ideia é dar uma data e alterar logo.

Não sei se o que sugeri funciona.

Posted

As variaveis de instancia e os contrutores são os seguintes:

import java.util.GregorianCalendar;

public class ContaPrazo
{

/** Variaveis de instancia (sempre privadas) */

    private String codigo;
    private String titular;
    private int prazo;    
    private double taxa;    // taxa para o prazo
    private double capital;
    private GregorianCalendar dataInicio;
    private GregorianCalendar dataJuros;

/** Construtor Vazio - Redefine construtor por omissão*/

    public ContaPrazo(){
        codigo = "";
        titular = "";
        prazo = 0;
        taxa = 0.0;
        capital = 0.0;
     }

/** Contrutor das partes*/

    public ContaPrazo(String tit, String cod, int dias, double tax, double montante, GregorianCalendar dInicio, GregorianCalendar dJuros){
        titular = tit;
        codigo = cod;
        prazo = dias;
        taxa = tax;
        capital = montante;
        dataInicio = new GregorianCalendar();
        dataJuros = (GregorianCalendar) dataInicio.clone(); 
        dataJuros.add(GregorianCalendar.DAY_OF_MONTH, prazo); 
    }

/** Construtor de copia */

    public ContaPrazo(ContaPrazo cont){
        titular = cont.getTitular();
        codigo = cont.getCodigo();
        prazo = cont.getPrazo();
        taxa = cont.getTaxa();
        capital = cont.getCapital();
        dataInicio = cont.getDataInicio();
        dataJuros = cont.getDataJuros();
    }

Da maneira que o codigo foi feito ao criar uma instancia da ContaPrazo tenho de inserir a dataInicio e dataJuros, ja experimentei os formatos que referi e da sempre o erro que também ja referi.

Posted

Formatos que indicaste? Não estou a perceber bem o que estás a passar para o calendário.

Pegando no teu código, iria construir uma ContaPrazo da seguinte forma:

ContaPrazo cp = new ContaPrazo("Knitter", "COD1", 20, 0.4, 5000, new GregorianCalendar(2009, 4, 10), new GregorianCalendar(2009, 6, 10) ;

Os valores foram meramente aleatórios, e podes construir as instâncias de GregorianCalendar noutro lado sem ser directamente na chamada ao construtor da classe ContaPrazo, como fiz.

Já agora, redefinir o construtor por omissão para fazer o que ele já faz é algo inútil, é imposição ou escolheste fazer assim? Mais simples que fazer um clone será mesmo instanciares um calendário novo, pelo que está no código, o clone não te está a servir para nada.

Como nota final, no construtor de cópia não precisas usar os métodos get se esses não fizerem validações ou outras operações importantes.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.