Problemas com IF, help!

4 respostas
H

fala pessoal, não consegui ver o que estou fazendo de errado, mas provavelmente é um erro besta.
Consiste num programa de 2 classes, 1 com o objeto Date e outra com o app para captar os dados e imprimir.
Porém na hora da validação da data está dando erro.

2 codigos:

/*
 * Date.java
 * Exercicio 3.15
 * Created on 8 de Maio de 2006, 20:14
 */

package Date;

public class Date {
    int dia;
    int mes;
    int ano;
    
    /** Creates a new instance of Date */
    public Date( int dia1, int mes1, int ano1) {
        ano = ano1;
        
        if( dia > 0 && dia < 32){
            dia = dia1;
        }
        
        else {
            System.out.println("Data invalida");
        }
                    
        if (mes > 0 && mes < 13) {
            mes = mes1;
        }
        else {
            System.out.println("Data invalida");
        }
                
    }
        
    public int getDia() {
        return dia;
    }
    
    public int getMes() {
        return mes;
    }
    
    public int getAno() {
        return ano;
    }
    
    public void displayDate() {
        System.out.println( dia + "/" + mes + "/" + ano);
        
    }
}

e o app...

package Date;

import java.util.Scanner;

public class DateTest {
/**
 *
 * @author  xp
 */

    public static void main(String[] args) {
        int dia;
        int mes;
        int ano;
        
        Scanner input = new Scanner ( System.in );
        System.out.print("Dia:");
        dia = input.nextInt();
        System.out.print("Mes:");
        mes = input.nextInt();
        System.out.print("Ano:");
        ano = input.nextInt();
        
        Date data1 = new Date(dia, mes, ano);
        data1.displayDate();
        
    }
    
}

Digitei dia 20, mes 10, ano 1981, mas a resposta é:

Data invalida
Data invalida
1981

0/0/1981

Alguem me explica onde eu viagei na maionese?
valeu!!!

4 Respostas

David
if( dia > 0 && dia < 32){
    dia = dia1;
}
// ...
if (mes > 0 && mes < 13) {
    mes = mes1;
}

Você tem que testar se o dia e o mês que você está passando no construtor são válidos, portanto o teste deveria ser feito com dia1 e mes1, e não com dia e mes, que sempre vão ser zero nesse caso.

H

hahahahahha :smiley:
boa… valeu!

F

hehehhee

ateubh

Você esqueceu de olhar se o ano é bisexto…

Criado 8 de maio de 2006
Ultima resposta 9 de mai. de 2006
Respostas 4
Participantes 4