The_BoB 0 Denunciar post Postado Abril 26, 2010 O algoritmo é o seguinte import java.util.Scanner; public class DataValida { public static void main (String[]args) { Scanner teclado = new Scanner (System.in); System.out.println ("Por favor digite o dia"); int dia = teclado.nextInt(); System.out.println ("Por favor digite o mês"); int mes = teclado.nextInt(); System.out.println ("Por favor digite o ano"); int ano = teclado.nextInt(); if (mes == 4 && mes == 6 && mes == 9 && mes == 11 && dia > 0 && dia <= 30 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { if (mes == 2 && dia > 0 && dia <= 28 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } if (mes == 1 && mes == 3 && mes == 5 && mes == 7 && mes == 8 && mes == 10 && mes == 12 && dia > 0 && dia <= 31 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } } } } Já vi re-vi e vi de novo e não consigo achar o erro, sou novo e a questão que tô tendo muita dificuldade pra resolver, queria que me explicassem onde está o erro. O erro é o seguinte quando vou testar o algoritmo e insiro uma data válida ele diz que a data não é válida ou as vezes diz a data é válida e logo abaixo "Não é uma data válida". Tô enganchado aí quem puder ajudar desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 26, 2010 Ajuda mais se você fornecer o dado de teste. Mas com certeza a lógica dos meses está errada. 4/6/2000 => deveria entrar no primeiro if, mas em nenhum lugar da face da Terra Abril é igual ao mês de Junho. Você não pode ter 4 = 6. Ou é 4 ou é 6. Compartilhar este post Link para o post Compartilhar em outros sites
The_BoB 0 Denunciar post Postado Abril 27, 2010 Muito obrigado Isis, mudei essa parte e adicionei um if para ano bissexto, mas ainda achei um erro. Só não sei como corrigí-lo import java.util.Scanner; public class Questao16 { public static void main (String[]args) { Scanner teclado = new Scanner (System.in); System.out.println ("Por favor digite o dia"); int dia = teclado.nextInt(); System.out.println ("Por favor digite o mês"); int mes = teclado.nextInt(); System.out.println ("Por favor digite o ano"); int ano = teclado.nextInt(); if (dia > 0 && dia <= 30 && mes == 4 || mes == 6 || mes == 9 || mes == 11 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { if (dia > 0 && dia <= 28 && mes == 2 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } if (dia > 0 && dia <= 31 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } if (dia > 0 && dia <= 29 && mes == 2 && ano > 0 && ano % 400 == 0 || ano % 4 == 0 && ano % 100 != 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } if (dia > 31 || dia <= 0 && mes > 12 || mes <= 0 && ano < 0 ) { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } if (dia > 29 && mes == 2 && ano % 400 != 0 || ano % 4 != 0 && ano % 100 == 0) { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } } } } Execução: Por favor digite o dia 4 Por favor digite o mês 6 Por favor digite o ano 2000 4/6/2000 É uma data válida. Process completed. O erro que falei lá em cima: Por favor digite o dia 32 Por favor digite o mês 4 Por favor digite o ano 120 32/4/120 É uma data válida. 32/4/120 Não é uma data válida. Process completed. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 27, 2010 ele cai aki: if (dia > 0 && dia <= 29 && mes == 2 && ano > 0 && ano % 400 == 0 || ano % 4 == 0 && ano % 100 != 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); 120 % 4 = 0 E 120 % 100 = 0; tente rever isso; --- faça uma coisa simples primeiro: import java.util.Scanner; public class Questao16 { public static void main (String[]args) { int invalida = 0; Scanner teclado = new Scanner (System.in); System.out.println ("Por favor digite o dia"); int dia = teclado.nextInt(); System.out.println ("Por favor digite o mes"); int mes = teclado.nextInt(); System.out.println ("Por favor digite o ano"); int ano = teclado.nextInt(); String Data = new String(dia+"/"+mes+"/"+ano); if (dia < 1 || dia > 31) invalida = 1; else if (mes < 1 || mes > 12) invalida = 1; else if (ano < 1) invalida = 1; if (invalida == 0) System.out.println(Data+" E uma data valida"); else System.out.println(Data+" Nao e uma data valida"); } } ai depois acrescente algo pra ver se é bissexto! []s Compartilhar este post Link para o post Compartilhar em outros sites
The_BoB 0 Denunciar post Postado Abril 30, 2010 não tô entendendo ainda, mas vou tentar fazer um novo. Obrigado a todos! import java.util.Scanner; public class Questao16 { public static void main (String[]args) { Scanner teclado = new Scanner (System.in); System.out.println ("Por favor digite o dia"); int dia = teclado.nextInt(); System.out.println ("Por favor digite o mês"); int mes = teclado.nextInt(); System.out.println ("Por favor digite o ano"); int ano = teclado.nextInt(); if (dia <= 0 || dia > 31 || mes <= 0 || mes > 12 || ano <= 0) { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } else { if (dia > 0 && dia <= 31 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { } if (dia > 0 && dia <= 30 && mes == 4 || mes == 6 || mes == 9 || mes == 11 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { if (dia > 0 && dia <= 28 && mes == 2 && ano > 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { if (dia > 0 && dia <= 29 && mes == 2 && ano > 0 && ano % 400 == 0 || ano % 4 == 0 && ano % 100 != 0) { System.out.println (dia + "/" + mes + "/" + ano + " É uma data válida."); } else { if (dia >= 29 && mes == 2 && ano % 400 != 0 || ano % 4 != 0 && ano % 100 == 0) { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } else { if (dia >= 31 && mes == 4 || mes == 6 || mes == 9 || mes == 11) { System.out.println (dia + "/" + mes + "/" + ano + " Não é uma data válida."); } } } } } } } } Muito obrigado! Tá aí feito. Agora queria saber se alguém me indica algum e-book e/ou site no qual eu possa aprender sobre o uso do laço for. Tem uma questão aqui que é pra desenvolver um algoritmo que calcule e imprima a soma dos n primeiros pares, e o valor de n tem que ser informado pelo usuário. Não faço a mínima ideia de como fazer isso. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 30, 2010 Procure o livro Absolute Java do Walter Savitch. O Core Java 1 também serve ( deve estar na 8a edição) Compartilhar este post Link para o post Compartilhar em outros sites
adepara gedv 0 Denunciar post Postado Março 31, 2015 Também gostaria de saber! Compartilhar este post Link para o post Compartilhar em outros sites