Java - Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

   
Vista:

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Rudy (8 intervenciones) el 24/10/2015 12:46:57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Scanner;
 
public class ej25a {
 
	public static void main (String args[]) {
 
			java.util.Scanner Leer = new java.util.Scanner(System.in);
 
            int dia = -1;
            int mes = -1;
            int anho = -1;
            int resultado = 0;
            String fecha;
 
            System.out.print("Introduce fecha de tu nacimiento: ");
 
            boolean fechaIncorrecta = false;
            do{
                System.out.print("Dia: ");
                dia = Leer.nextInt();
              System.out.print("Mes: ");
                mes = Leer.nextInt();
               System.out.print("Anho: ");
                anho = Leer.nextInt();
                fechaIncorrecta = (anho > 9999) || (dia < 1 || dia > 31) || (mes < 1 || mes > 12);
                if (fechaIncorrecta)
                    System.out.println("Laa introducida NO es correcta");
            }while (fechaIncorrecta);
            resultado = dia + mes + anho;
            do {
                resultado = resultado / 10 + resultado % 10;
            }while(resultado > 10);
            System.out.println(+resultado);
	}
}

necesito que me pregunte la fecha con el formato de dd/mm/aaaa y que con un substring lo vuelva a pasar a entero para que calcule luego las operaciones
Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 15:54:30
Hola...

Haber si te entendí... Quieres solicitarle al usuario que ingrese una fecha en formato dd/mm/yyyy donde tu separas el día, mes y año para convertirlo a enteros y hacer las operaciones correspondientes. La separación es necesariamente con el método substring() o puedes hacerlo de diferente manera?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 15:56:28
necesito utilizar un substring y un boolean para que no se pase de las fechas indicadas en el codigo ademas si meto la fecha de 17/05/1275 no podria darme 10 puesto que lo tendria que sumar el 1 y el 0


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Scanner;
 
public class ej25a {
 
	public static void main (String args[]) {
 
	java.util.Scanner Leer = new java.util.Scanner(System.in);
	Scanner entrada = new Scanner(System.in);
 
            int dia, mes, anho;
            int resultado;
            String fecha;
            int suma;
 
            System.out.print("Introduce fecha de tu nacimiento: ");
            fecha = entrada.nextLine();
            dia = Integer.parseInt(fecha.substring(0,2));
            mes = Integer.parseInt(fecha.substring(3,5));
			anho = Integer.parseInt(fecha.substring(6,10));
			resultado=dia + mes + anho;
 
			boolean fechaIncorrecta = false;
 			do{
				fechaIncorrecta = (anho > 9999) || (dia < 1 || dia > 31) || (mes < 1 || mes > 12);
					if (fechaIncorrecta)
						System.out.println("La fecha introducida no es correcta");
			}
            while (fechaIncorrecta);
				resultado = dia + mes + anho;
 
            do{
                resultado = resultado / 10 + resultado % 10;
            }
            while(resultado > 10);
 
            System.out.println("Numero de la suerte: " + resultado);
	}
}

el problema que tengo aora es que el boolean me entra como bucle infinito y si la suma al final es 10 no me suma esos dos digitos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 16:05:25
Hola...

Al ejecutar tu aplicación obtengo esto como salida...

1
2
Introduce fecha de tu nacimiento: 18/01/1991
Numero de la suerte: 3

Es correcto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 16:08:02
correcto
pero si pones una fecha como año 50000
sale un bucle
como arreglarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 16:18:54
Hola...

Entonces, supongo que solo necesitas validar, puedes hacer un cacheo de excepciones y eso resolvería tu problema...

1
2
3
4
5
6
7
8
9
10
11
Scanner entrada = new Scanner(System.in);
Date fecha = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
 
try {
	System.out.print("Ingrese una fecha: ");
	fecha = sdf.parse(entrada.nextLine());
        System.out.println(sdf.format(fecha));
} catch (ParseException e) {
	System.out.println("ERROR. Fecha incorrecta");
}

Solicitamos la fecha al usuario, el usuario ingresa la fecha y con la clase SimpleDateFormat, nosotros le estamos dando un formato a la cadena ingresada por el usuario, por lo cual, si el usuario ingresa algún garabato, el parseo no se cumple y lanza la excepción, caso contrario mostramos la fecha con el formato especificado ^^.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 16:28:38
pero no puedo utilizar catch...
necesito hacerlo con boolean y que si la fecha no es correcta que vuelva a pedir la fecha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 16:33:41
Hola...

Esto te pedirá las fechas tantas veces las ingreses mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Scanner entrada = new Scanner(System.in);
Date fecha = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
boolean validar = false;
 
while (!validar){
	try {
		System.out.print("Ingrese una fecha: ");
		fecha = sdf.parse(entrada.nextLine());
		validar = true;
	} catch (ParseException e) {
		System.out.println("ERROR. Fecha incorrecta");
	}
}
 
System.out.println(sdf.format(fecha));

Ahora bien, tu lo necesitas forzosamente separando la fecha?. Si ese es el caso, te va a llevar mas tiempo ya que necesitas validar muchas cosas. Por Ejemplo:

31/01/1991 - Correcto
31/02/1992 - Incorrecto
31/11/2015 - Incorrecto

Y eso que no estoy contando los años bisiestos ^^.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 16:38:37
cierto pero lo de los años bisiestos no me hace falta en este caso
tal y como subi la ultima vez el codigo solo necesito que me sume los digitos (en el caso de que el resultado final sea 10)
y que me funcione el boolean
no puedo utilizar ni el null ni nada que no sea basico
ni break ni return ni null ni continue....
lo veo complicado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 16:51:26
Si no puedes usar nada que no sea básico, entonces debes usar cosas avanzadas, pero si ese es el caso entonces todo el programa esta mal ya que todo es básico ^^!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 16:55:11
al contrario...solo puedo utilizar metodos basicos...
pero ni date ni nada que haga que el codigo salga solo
es como si con metodos basicos lo iciese manualmente
el booelan sabes xk me crea un bucle infinito?
y sabrias decirme como ago que me sume el resultado si me da 10 al final=?
si pongo 17/05/1988 me da de resultado 10 y deberia ser 1 puesto que 10=1+0=1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 17:14:07
Pues como te había mencionado anteriormente y en base a la descripción del problema, necesitas un método boleano que contenga todas la validaciones posibles para que obtengas una fecha correcta, de esa manera podemos decir que estas validando la fecha de manera manual.

A continuación, te paso un código pequeño para que veas como funcionaria..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
	if(validarFecha("18/01/1991")){
		System.out.println("Es una fecha correcta.");
	} else {
		System.out.println("No es una fecha correcta.");
	}
}
 
public static boolean validarFecha(String fecha){
	if(fecha != null){
		return true;
	} else {
		return false;
	}
}

Obviamente, tendrías que cambiar la validación que tengo por las que tu necesitas, al final de todas las validaciones y siempre sean correctas, mandarás al final como resultado un True, caso contrario manda el False.

Con respecto a lo otro, posiblemente llega un momento en que no haces la separación de los números finales para poder realizar la suma, o bien, puede que no esta recibiendo el último valor por alguna validación que tengas, para ello podrías usar el modo debug y así encontrar el error en tus salidas, ya que si te ofrezco una solución no se si es permitido o no por tus requerimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Pijemo (8 intervenciones) el 24/10/2015 17:19:50
Correcto!!!!!
creo k he encontrado la solucion, voy a ver si complila bien y lo idento como necesita y lo subo!!!
muchas gracias por toda la ayuda que me has ofrecido!!
un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet

Ayuda para sacar el lucky number esta resuelto pero necesito iniciar la fecha con formato dd/mm/aaaa

Publicado por Lawliet (236 intervenciones) el 24/10/2015 17:22:30
Excelente!

Nos comentas como te fue, y si tu lo quieres claro esta, comparte el código ya que posiblemente algún día alguien se encuentre en tu situación ^^.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Terminado!!!!!

Publicado por pijemo (8 intervenciones) el 24/10/2015 19:45:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Scanner;
 
public class lucky_number {
 
	public static void main (String args[]) {
 
	java.util.Scanner Leer = new java.util.Scanner(System.in);
	Scanner entrada = new Scanner(System.in);
 
            int dia, mes, anho;
            int resultado;
            String fecha;
 
            System.out.print("Introduce fecha de tu nacimiento: ");
            fecha = entrada.nextLine();
            dia = Integer.parseInt(fecha.substring(0,2));
            mes = Integer.parseInt(fecha.substring(3,5));
			anho = Integer.parseInt(fecha.substring(6,10));
			resultado = dia + mes + anho;
 
			 boolean fechaIncorrecta = false;
				fechaIncorrecta =(anho > 9999) || (dia < 1 || dia > 31) || (mes < 1 || mes > 12);
 
				if (fechaIncorrecta)
					System.out.println("La fecha introducida no es correcta");
 			do{
			}
            while (fechaIncorrecta);
				resultado = dia + mes + anho;
 
            do{
                resultado = resultado / 10 + resultado % 10;
            }
            while (resultado > 9 || resultado < 1);
 
            System.out.println("Numero de la suerte: " + resultado);
            System.out.println();
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar