Olá pessoal…Bem tive uma prova hj e o ultimo exercicio era assim:
…Crie um programa que receba do usuario o DIA, MES, ANO. Crie uma classe testadora tbm…Ao informaro dia o e o mes deve ter um metodo que exiba qual estação do ano esta…
Os dados eram os seguintes:
Outono 20 março a 19junho ; Inverno20junho a 19setembro; Primavera 20 setembro a 19 dezembro ; Primavera 20 dezembro a 19 março…
Bem na verdade não consegui terminar esse ultimo exercicio…Sinceramente não consegui pensar e o tempo não ajudou pois eram 10 exercicios tbm…
eu fiz até esse ponto:
[color=darkred] import java.util.Scanner; [/color]
[color=darkred] public class Estacao{[/color]
[color=red]private int mes;
private int ano;
private int dia;[/color]
[color=darkred] public int getAno() { [/color]
[color=red]return [/color] ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
public int getMes() {
return mes;
}
public void setMes(int mes) {
this.mes = mes;
Na parte do MAIn e testa eu ja não sabia o que fazer…
Por que você não cria uma Interface EstacaoDoAno com dois métodos: Calendar getInicio(), Calendar getFim(), String getEstacao() …algo assim.
Inverno, Primavera, Outono e Verao serão implementações da sua interface EstacaoDoAno (ou modele como classe abstrata, já que as estações são fortemente especializadas da EstacaoDoAno).
Daí, quando o usuário digitar a data, verifica se ela está entre o getInicio() e o getFim() de cada estação… Acho que não precisa criar classes separadas para cada estação. Apenas crie um atributo Nome na classe EstacaoDoAno, e no main você cria um Array de EstacaoDoAno.
/*
* EstacaoDoAno.java
*
* Created on 29 de Março de 2008, 10:30
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package exemplos.guj;
import java.util.Date;
/**
*
* @author Diego Inácio Goergen
*/
public class EstacaoDoAno {
private String nome;
private Date inicio;
private Date fim;
/** Creates a new instance of EstacaoDoAno */
public EstacaoDoAno() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Date getInicio() {
return inicio;
}
public void setInicio(Date inicio) {
this.inicio = inicio;
}
public Date getFim() {
return fim;
}
public void setFim(Date fim) {
this.fim = fim;
}
public static void main(String[] args){
EstacaoDoAno[] estacoes = new EstacaoDoAno[]{ new EstacaoDoAno(), new EstacaoDoAno(), new EstacaoDoAno(), new EstacaoDoAno() };
estacoes[0].setNome("Verão");
// Agora cadastra as datas de início e fim, que eu não pesquisei...
estacoes[1].setNome("Outono");
// Agora cadastra as datas de início e fim, que eu não pesquisei...
estacoes[2].setNome("Inverno");
// Agora cadastra as datas de início e fim, que eu não pesquisei...
estacoes[3].setNome("Primavera");
// Agora cadastra as datas de início e fim, que eu não pesquisei...
// Com tudo cadastrado, leia os valores que o usuário digitar e teste...
}
}
Essa classe é suficiente. Instancie ela 4 vezes agora.
[EDIT]
Desculpe, mas eu coloquei a data como Date, esqueci que era para ler DIA, MES e ANO… mas com Date é mais fácil e simples, eu acho…
Bom… agora você tem um vetor com todas as estações, certo??
E agora você lê o dia, mes e ano que o usuário digitar e cria um Date, assim:
new Date(ano, mes, dia);
E com esse Date criado, você verifica em qual estação ele se encaixa. Talvez cri um método na classe EstacaoDoAno, que verifica se o dia está naquela estação:
public boolean isNestaEstacao(Date d){
// A data está nesta estação quando ela for depois do início E antes do final...
return d.after(this.getInicio()) && d.before( this.getFim() );
}
Vo digitar o codigo ak ver se consego ver o Antes e Depois…
[/quote]
Isso, pega o código, preenche ele com o que eu não sabia (as datas de início e fim) e com a leitura dos dados, e testa. talvez tenha problemas, mas a base é isso.
Vo digitar o codigo ak ver se consego ver o Antes e Depois…
[/quote]
Isso, pega o código, preenche ele com o que eu não sabia (as datas de início e fim) e com a leitura dos dados, e testa. talvez tenha problemas, mas a base é isso.[/quote]
As datas eu tenho…Devo implementar nas estações?
Outono 20 março a 19junho ; Inverno20junho a 19setembro; Primavera 20 setembro a 19 dezembro ; Primavera 20 dezembro a 19 março…
[quote=thegoergen][quote=ClovisCmb]Vou cadastrar todas as datas em um vetor???/
Não tenho um conhecimento para fazer isso ainda…
[/quote]
Não é num vetor separado, é em cada estação, logo depois do nome. assim:
[code]
estacoes[1].setNome(“Outono”);
estacoes[1].setInicio( new Date(2008,3,20) );
estacoes[1].setFim( new Date(2008,6,19) );
Um…Uma pergunta o estacoes[1].setInicio( new Date(2008,3,20) estacoes[1].setFim( new Date(2008,6,19) );
Ja delimita as datas sozinho?..POr exemplo se eu entrar com 20 de junho ele ja sabe q e pro proximo etc…?
/** Creates a new instance of EstacaoDoAno */
public EstacaoDoAno() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Calendar getInicio() {
return inicio;
}
public void setInicio( Calendar inicio) {
this.inicio = inicio;
}
public Calendar getFim() {
return fim;
}
public void setFim( Calendar fim) {
this.fim = fim;
}
public boolean isNestaEstacao( Calendar d){
// A data está nesta estação quando ela for depois do início E antes do final…
return d.after(this.getInicio()) && d.before( this.getFim() );
}
public static void main(String[] args){
EstacaoDoAno[] estacoes = new EstacaoDoAno[]{ new EstacaoDoAno(), new EstacaoDoAno(), new EstacaoDoAno(), new EstacaoDoAno() };
estacoes[0].setNome("Verão");
estacoes[0].setInicio( new GregorianCalendar(2007,11,20) );
estacoes[0].setFim( new GregorianCalendar(2008,2,19) );
estacoes[1].setNome("Outono");
estacoes[1].setInicio( new GregorianCalendar(2008,2,20) );
estacoes[1].setFim( new GregorianCalendar(2008,5,19) );
estacoes[2].setNome("Inverno");
estacoes[2].setInicio( new GregorianCalendar(2008,5,20) );
estacoes[2].setFim( new GregorianCalendar(2008,8,19) );
estacoes[3].setNome("Primavera");
estacoes[3].setInicio( new GregorianCalendar(2008,8,20) );
estacoes[3].setFim( new GregorianCalendar(2008,11,19) );
// Aqui acabou a inicialização... agora vamos testar a data de hoje...
Calendar c = new GregorianCalendar();
for (int i = 0; i < estacoes.length; i++){
if (estacoes[i].isNestaEstacao(c)){
System.out.println( " A data " + c.getTime() + " está na estação " + estacoes[i].getNome());
}
}
}
}[/code]
[EDIT]
Alterei os parâmetros e atributos para Calendar, substituindo os GregorianCalendar