Olá pessoal, estou resolvendo uns exercícios de POO e não consigo arrumar um problema que está dando no meu codigo. Eu preciso fazer um exercicio que receba duas datas e veja se elas são válidas.
Então eu criei um método que faz o teste:
public String testaDatas(){
if(dia > 0 && dia < 31 || mes > 0 && mes < 12 || ano > 0 && ano < 12 ){
return "Data valida";
}else{
return "!!Data invalida!!";
}
}
E coloquei pra receberem esse valor:
[code]public class ProgramaDatas {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
Datas data1 = new Datas(13, 11, 12);
Datas data2 = new Datas(1, 2, 30);[/code]
Só que mesmo com o ano no valor 30 ele diz que é uma data válida. Não consigo achar o meu erro, quando eu coloco por exemplo 50/30/30 ele diz que é inválido só que se por somente um valor errado, ele diz que é válido.
se Dia é correto OU Mes é correto OU Ano é correto, a Data é correta. Ou seja, se dia estiver correto, mês e ano não precisam estar corretos para você considerar Data válida.
Também você limitou o ano entre 1 e 11. Não está certo.
[quote=GabbiRold]Olá pessoal, estou resolvendo uns exercícios de POO e não consigo arrumar um problema que está dando no meu codigo. Eu preciso fazer um exercicio que receba duas datas e veja se elas são válidas.
Então eu criei um método que faz o teste:
public String testaDatas(){
if(dia > 0 && dia < 31 || mes > 0 && mes < 12 || ano > 0 && ano < 12 ){
return "Data valida";
}else{
return "!!Data invalida!!";
}
}
E coloquei pra receberem esse valor:
[code]public class ProgramaDatas {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
Datas data1 = new Datas(13, 11, 12);
Datas data2 = new Datas(1, 2, 30);[/code]
Só que mesmo com o ano no valor 30 ele diz que é uma data válida. Não consigo achar o meu erro, quando eu coloco por exemplo 50/30/30 ele diz que é inválido só que se por somente um valor errado, ele diz que é válido.[/quote]
Tipo um dia fiz um exercício assim, não sei se é o seu caso:
import java.util.Scanner;
public class L02_Q15_DataValida
{
public static void main (String[]args)
{
Scanner dados = new Scanner (System.in);
int dia, mes, ano;
System.out.print("Dia: ");
dia = dados.nextInt();
System.out.print("Mês: ");
mes = dados.nextInt();
System.out.print("Ano: ");
ano = dados.nextInt();
if ((ano>=0000||ano>=00)&&(ano<=9999||ano<=99))
{
if (mes>=1&&mes<=12)
{
if (mes==2)
{
if ((ano%400==0)||(ano%4==0&&ano%100!=0))
{
if (dia>=1&&dia<=29)
{
System.out.println("É uma data válida! ("+ dia +"/"+ mes +"/"+ ano +")");
}
else
{
System.out.println("Não é uma data válida!");
}
}
else
{
if ((ano%400!=0)||(ano%4!=0&&ano%100==0))
{
if (dia>=1&&dia<=28)
{
System.out.println("É uma data válida! ("+ dia +"/"+ mes +"/"+ ano +")");
}
else
{
System.out.println("Não é uma data válida!");
}
}
}
}
else
{
if (mes%2==0)
{
if (dia>=1&&dia<=30)
{
System.out.println("É uma data válida! ("+ dia +"/"+ mes +"/"+ ano +")");
}
else
{
System.out.println("Não é uma data válida!");
}
}
else
{
if (mes%2!=0)
{
if (dia>=1&&dia<=31)
{
System.out.println("É uma data válida! ("+ dia +"/"+ mes +"/"+ ano +")");
}
else
{
System.out.println("Não é uma data válida!");
}
}
}
}
}
else
{
if (mes<1||mes>12)
{
System.out.println("Não é uma data válida!");
}
}
}
else
{
if ((ano<0000||ano<00)||(ano>9999||ano>99))
{
System.out.println("Não é uma data válida!");
}
}
}
}