Java - Atascado en este ejercicio de métodos y clases en JAVA

 
Vista:
Imágen de perfil de Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 19/11/2022 11:01:46
Hola buenos días, estoy intentando realizar este ejercicio de creación de clases y métodos en JAVA y no soy capaz de sacarlo o como poder empezarlo.

En un instituto de Córdoba han metido un salto bastante grande entre los bucles y arrays a este tipo de ejercicio más complejo y ya me ha descolocado por completo y me me está agobiando hasta tal punto de replantearme si seguir en esta aventura de la programación. Han pasado de hacer ejercicios de bucles sencillos a mezclar ahora todo y es que no soy capaz de sacarlo .

Algún compañero que tenga conocimientos más avanzados de programación me puede iluminar para ver como puedo hacer este ejercicio? Entiendo que tengo que crear primero la clase herramientas, y luego meter métodos de alguna forma. Pero no se ni como empezar. Algún videotutorial que explique algún ejercicio similar?

Ejercicio
------------

Vamos a crear nuestra propia clase que podamos utilizar como caja de herramientas.

Esta clase creada se podrá usar posteriormente añadiendo métodos que nos faciliten la creación de aplicaciones. Añadiremos varios métodos estáticos que nos sirvan para introducir datos desde teclado y que se encarguen de gestionar los posibles errores humanos que se puedan producir. Vamos a crear una clase a la que llamaremos Herramientas. En esta clase debemos crear los siguientes métodos estáticos con las siguientes funcionalidades:

introduceShort. Pedirá al usuario que introduzca un valor de tipo short. En el caso de que introduzca una letra u otra cosa, o bien se produzca una excepción (porque introduce un valor real, o un valor fuera de rango) el método indicará que el valor introducido no es correcto y pedirá que se vuelva a introducir. Una vez introducido un valor correcto, este será devuelto por el método.

introduceByte. Similar al anterior.

introduceEntero. Similar al anterior.

introduceFloat. Similar al anterior.

introduceDouble. Similar al anterior.

introduceFecha. Se le pedirá al usuario que introduzca un día, un mes y un año e intentará crear un objeto de tipo LocalDate. En caso de producirse una excepción se informará de que los datos introducidos son incorrectos y se volverá a pedir los datos. En este método podemos utilizar los métodos creados anteriormente. El método devolverá un objeto de tipo LocalDate.

introduceCaracter. Pedirá que se introduzca un carácter por teclado, controlando si se producen errores o no y devolviendo un tipo primitivo char.

introduceSiNo. Este método pedirá que se introduzca un valor 'S', 's', 'N', o 'n' y devolverá un valor booleano true o false. Deberá también controlar los posibles errores al introducir los datos volviendo a pedirlos en caso de error.

limpiarPantalla. Este método simplemente creará un bucle de unas 30 repeticiones y en cada repetición introducirá una línea en planco en la pantalla, haciendo el efecto de que se borra toda la pantalla. No ha de devolver nada.

pulsarIntro. Este método mostrará un mensaje pidiendo que se pulse la tecla intro tras lo cual se quedará en espera y una vez que se pulse la aplicación continuará. No ha de devolver nada.

Gracias por la ayuda, sigo leyendo y buscando a ver si puedo sacarlo o no.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 19/11/2022 19:31:41
Hola Francisco, veo que eres de Andalucía como yo jajaja. En mi instituto también nos han puesto un ejercicio parecido (supongo que se los mandan a los profesores desde educación o algo, porque son muy similares).

Entiendo que tienes que crear primero una clase, y luego cada método estático donde tienes que hacer que hagan esas funciones. Tienes que usar lo aprendido con los bucles, condicionales, etc.

A mí también me está costando ese ejercicio y me he registrado porque googleando he visto este post y que el ejercicio era parecido al que tengo que hacer jajaja

Yo lo estoy intentando pero me está constando. Suerte!
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
Imágen de perfil de Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 19/11/2022 19:39:15
Hostia! Gracias por responder.

De que provincia de Andalucía eres? Tu ejercicio es igual? Qué curioso!

Yo me estoy viniendo abajo tío, con los ejercicios anteriores los he ido sacando, pero estos de POO me están costando la vida uffffff

Estoy hasta por dejar programación y centrarme en las otras asignaturas, pues, con tantos ejercicios y trabajos de las otras te quitan mucho tiempo para centrarte en la importante y la que da trabajo, que es la programación.
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 19/11/2022 19:47:48
Yo soy de un pueblo de Sevilla.

Este foro suele tener actividad? Soy nuevo, no lo conocía.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Kabuto (1381 intervenciones) el 20/11/2022 01:34:50
Pues aquí un medio granaíno / medio catalán, que actualmente vive en Barcelona.

A ver si os puedo echar una mano.

Mirad, comienzo la clase Herramientas con el primer método para pedir un short.
Incluye como atributo un Scanner para poder pedir datos por teclado.

Importante que ambos, atributo y métodos, sean static

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
import java.util.Scanner;
 
public class Herramientas {
 
	private static Scanner teclado = new Scanner(System.in);
 
	/**
	 * Método que solicita un valor de tipo short.
	 * La lectura se repite hasta recibir un short válido.
	 * El short validado será retornado.
	 *
	 * @return Valor acorde al tipo de dato short
	 */
	public static short introduceShort() {
		short valor = 0;
		boolean aceptado = false;
 
		while(!aceptado) {
			try {
				System.out.print("\nValor para un tipo short: ");
				valor = Short.parseShort(teclado.nextLine()); //Si dan un valor incorrecto, se lanza excepción
				aceptado = true; //Esto solo ocurre si el valor es correcto
			} catch(Exception ex) {
				System.out.println("ERROR. El valor no es aceptable");
				System.out.println("Introduzca solo cifras numericas, sin letras ni simbolos");
				System.out.print("Valor minimo: " + Short.MIN_VALUE);
				System.out.println(" Valor maximo: " + Short.MAX_VALUE);
			}
		}
		//Valor aceptado, lo retornamos
		return valor;
	}
 
}

El método es sencillo.
En un bucle se pide un dato y se intenta convertir a short.
Si lo consigue, el bucle se termina y se retorna ese valor.
Si no lo consigue, porque el valor introducido no sirve para crear un short, sale un mensaje en pantalla y se vuelve a pedir el dato.


Si hacemos otra clase con un main() para probarlo:
1
2
3
4
5
6
7
8
9
10
public class Prueba {
 
	public static void main(String[] args) {
 
		short valorShort = Herramientas.introduceShort();
 
		System.out.println("\nValor short introducido: " + valorShort);
	}
 
}

En pantalla veremos que si no damos datos válidos, la petición del dato se repite:
1
2
3
4
5
6
7
8
9
10
11
12
13
Valor para un tipo short: caca
ERROR. El valor no es aceptable
Introduzca solo cifras numericas, sin letras ni simbolos
Valor minimo: -32768 Valor maximo: 32767
 
Valor para un tipo short: 345235325
ERROR. El valor no es aceptable
Introduzca solo cifras numericas, sin letras ni simbolos
Valor minimo: -32768 Valor maximo: 32767
 
Valor para un tipo short: 32000
 
Valor short introducido: 32000


Quizás el mensaje explicando el error no hace falta que sea tan detallado, eso ya lo decidís vosotros.

Pues con este ejemplo, intentad hacer los otros métodos para la clase Herramientas.

Los que no consigáis hacer, decidlo por aquí y os ayudamos.

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
2
Comentar
Imágen de perfil de Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 01:43:41
Figura, mostro, mastodonte, toro, furia, ciclón, tornado, artista, fenómeno, campeón, maestro!!!

Me has abierto los ojos! No sabes lo que me has aclarado el camino en este ejercicio que me estaba llevando por el callejón de la amargura.

Voy a ver si soy capaz de sacar los siguientes métodos y os digo, muchas gracias por la ayuda, medio andaluz tenías que ser!
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 20/11/2022 12:20:16
Gracias por la ayuda.

Yo estoy teniendo problemas para sacar estos 2:

introduceFecha. Se le pedirá al usuario que introduzca un día, un mes y un año e intentará crear un objeto de tipo LocalDate. En caso de producirse una excepción se informará de que los datos introducidos son incorrectos y se volverá a pedir los datos. En este método podemos utilizar los métodos creados anteriormente. El método devolverá un objeto de tipo LocalDate.

introduceSiNo. Este método pedirá que se introduzca un valor 'S', 's', 'N', o 'n' y devolverá un valor booleano true o false. Deberá también controlar los posibles errores al introducir los datos volviendo a pedirlos en caso de error.

Lo del localdate no lo he usado nunca y estoy algo perdido.

En el de introduceSiNo, con una condicional swich se podría hacer?

Gracias!
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 Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 13:06:50
Cómo has hecho para crear este?

introduceEntero. Similar al anterior.

No me sale.
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 20/11/2022 13:10:05
Así, con interger.parseInt

public static int IntroduceInt(){

int valor = 0;
boolean correcto = false;

while(!correcto){

try{

System.out.println("Introduce valor para tipo entero: ");
valor = Integer.parseInt(entrada.nextLine());
correcto = true;

}

catch(Exception ex){

System.out.println("ERROR, inserte un valor numérico entero aceptado: ");
System.out.println("Valor máximo: " + Integer.MAX_VALUE);
System.out.println("Valor mínimo: " + Integer.MIN_VALUE);
}

}

return valor;
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
Imágen de perfil de Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 13:19:27
Te como los huevos! Gracias!

Estaba atascado ahí.

Ahora estoy viendo como hacer el resto.
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 Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 13:54:12
Cómo sería la de la fecha? He intentado declarar variables día, mes, año, pero luego en el catch no me funciona. Creo que lo estoy haciendo mal.
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 20/11/2022 17:42:00
Yo estoy igual, me faltan todos estos y no me salen, llevo ya un buen rato probando pero siempre me falla algo.

introduceFecha. Se le pedirá al usuario que introduzca un día, un mes y un año e intentará crear un objeto de tipo LocalDate. En caso de producirse una excepción se informará de que los datos introducidos son incorrectos y se volverá a pedir los datos. En este método podemos utilizar los métodos creados anteriormente. El método devolverá un objeto de tipo LocalDate.

introduceCaracter. Pedirá que se introduzca un carácter por teclado, controlando si se producen errores o no y devolviendo un tipo primitivo char.

introduceSiNo. Este método pedirá que se introduzca un valor 'S', 's', 'N', o 'n' y devolverá un valor booleano true o false. Deberá también controlar los posibles errores al introducir los datos volviendo a pedirlos en caso de error.

limpiarPantalla. Este método simplemente creará un bucle de unas 30 repeticiones y en cada repetición introducirá una línea en planco en la pantalla, haciendo el efecto de que se borra toda la pantalla. No ha de devolver nada.

pulsarIntro. Este método mostrará un mensaje pidiendo que se pulse la tecla intro tras lo cual se quedará en espera y una vez que se pulse la aplicación continuará. No ha de devolver nada.


Por ejemplo el de introducir carácter hago esto pero se queda siempre pidiendo dato cuando lo uso en el metodo main...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static char IntroduceCaracter(){
 
        char caracter = 0;
        boolean correcto = false;
 
        while(!correcto){
 
            try{
 
                System.out.println("Introduce un caracter: ");
                caracter = entrada.nextLine().charAt(0);
 
            }
 
            catch(Exception ex){
 
                System.out.println("ERROR, introduce un caracter aceptado: ");
 
            }
        }
 
        return caracter;
    }


En el de limpiar pantalla entiendo que hay que meter un bucle for, pero no se cómo hacerlo en el método.

El resto no me sale.
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 Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 19:57:36
A mi tampoco me sale, llevo horas y estoy ya con dolor de cabeza.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Kabuto (1381 intervenciones) el 20/11/2022 20:19:46
Hola.

El método introduceCaracter() te repite la petición de datos porque te ha faltado dar valor true a la variable correcto, por lo que el bucle se repite eternamente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static char IntroduceCaracter(){
 
        char caracter = 0;
        boolean correcto = false;
 
        while(!correcto){
 
            try{
 
                System.out.println("Introduce un caracter: ");
                caracter = entrada.nextLine().charAt(0);
                correcto = true;
            }
 
            catch(Exception ex){
 
                System.out.println("ERROR, introduce un caracter aceptado: ");
 
            }
        }
 
        return caracter;
    }


Vale, sobre el método para crear fechas
1
2
3
4
5
introduceFecha. Se le pedirá al usuario que introduzca un día, un mes y un año
e intentará crear un objeto de tipo LocalDate.
En caso de producirse una excepción se informará de que los datos introducidos son incorrectos
y se volverá a pedir los datos. En este método podemos utilizar los métodos creados anteriormente.
El método devolverá un objeto de tipo LocalDate.

LocalDate es una clase con la que conviene familiarizarse porque facilita mucho el tratamiento de fechas.
Y aunque sea un peñazo..., no queda otra que acostumbrarse a consultar la documentación de Java para ver como funcionan esta y otras clases.

Si la consultamos, podemos encontrar que tiene un método estático llamado of() que permite construir un objeto LocalDate si le damos tres valores enteros: el año, el mes y el día del mes.

Así que podemos pedir tres enteros por teclado y llamar a ese método para que construya una fecha. Si la construcción falla, pues capturamos excepción y repetimos la petición de datos.

Los datos podemos pedirlos directamente con el objeto Scanner, o usar el método para pedir enteros que ya tendremos en nuestra clase Herramientas
Yo lo he usado pero haciendo una modificación para que le podamos dar un String con el mensaje que queramos mostrar para pedir el dato.
Así en lugar de que siempre diga "Introduce un int: " podremos hacer que diga otras cosas pasándole un String cuando lo invoquemos.
De hecho, yo le haría este mismo cambio a todos los otros métodos que se encargan de pedir datos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static int introduceInt(String mensaje) {
		int valor = 0;
		boolean aceptado = false;
 
		while(!aceptado) {
			try {
				System.out.print(mensaje);
				valor = Integer.parseInt(teclado.nextLine()); //Si dan un valor incorrecto, se lanza excepción
				aceptado = true; //Esto solo ocurre si el valor es correcto
			} catch(Exception ex) {
				System.out.println("ERROR. EL valor no es aceptable");
				System.out.println("Introduzca solo cifras numericas, sin letras ni simbolos");
				System.out.print("Valor minimo: " + Integer.MIN_VALUE);
				System.out.println(" Valor maximo: " + Integer.MAX_VALUE);
			}
		}
		//Valor aceptado, lo retornamos
		return valor;
	}

Y este sería el método introduceFecha(). Fijaros que al invocar a introduceInt() le podemos decir el mensaje que ha de mostrar en pantalla.
Para construir la fecha, hay que darle primero el año, luego el mes y por último el día
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static LocalDate introduceFecha() {
 
		LocalDate fecha = null;
		while (fecha == null) {
			System.out.println("\nIntroduzca los siguientes datos para construir una fecha.");
			int dia = introduceInt("Dia: ");
			int mes = introduceInt("Mes: ");
			int anio = introduceInt("Año: ");
 
			try {
				fecha = LocalDate.of(anio, mes, dia);
			}
			catch(Exception ex) {
				System.out.println("\nLos datos introducidos no permiten crear una fecha valida");
			}
		}
 
		return fecha;
	}


Y en pantalla comprobamos que podemos crear una fecha, si le damos datos válidos.
1
2
3
4
5
6
7
8
9
10
11
12
13
Introduzca los siguientes datos para construir una fecha.
Dia: 67
Mes: 99
Año: -75
 
Los datos introducidos no permiten crear una fecha valida
 
Introduzca los siguientes datos para construir una fecha.
Dia: 22
Mes: 11
Año: 2022
 
Fecha creada: 2022-11-22


Siguiente:
1
2
3
introduceSiNo.
Este método pedirá que se introduzca un valor 'S', 's', 'N', o 'n' y devolverá un valor booleano true o false.
Deberá también controlar los posibles errores al introducir los datos volviendo a pedirlos en caso de error.

Podemos usar el método introduceCaracter() (modificado para que le indiquemos el mensaje que queremos mostrar) para pedir una letra al usuario.
Si la letra es 'S' o 's', retornamos true.
Si es 'N' o 'n', retornamos false.
Si no es ninguna de estas, le decimos que se ha equivocado y seguimos pidiendo.

Si usamos un switch para evaluar el carácter, todo es más fácil:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static boolean introduceSiNo( ) {
 
		while(true) {
			char caracter = introduceCaracter("\n¿Esta de acuerdo?(S/N): ");
			switch (caracter) {
			case 's':
			case 'S':
				return true;
			case 'n':
			case 'N':
				return false;
			default:
				System.out.println("ERROR. Responda con S o N");
			}
		}
	}
Fiajos que para el bucle while simplemente pongo true. Es decir, no hay una condición de salida.
Esto es porque cuando el usuario responda bien, los "return" serán suficientes para terminar con el bucle.
Y si responde mal, el bucle seguirá repitiéndose hasta que lo haga bien.

Si la probamos:
1
2
3
4
5
6
7
8
9
10
11
12
public class Prueba {
 
	public static void main(String[] args) {
 
		System.out.println("La pizza con piña es un manjar");
		boolean deAcuerdo = Herramientas.introduceSiNo();
 
		System.out.println("\nEvaluando respuesta...");
		System.out.println(deAcuerdo?"¡Jesús!, que salvaje":"Equelicuá... ");
	}
 
}

Funciona bien:
1
2
3
4
5
6
7
8
9
La pizza con piña es un manjar
 
¿Esta de acuerdo?(S/N): m
ERROR. Responda con S o N
 
¿Esta de acuerdo?(S/N): s
 
Evaluando respuesta...
¡Jesús!, que salvaje


Siguiente.
1
2
3
4
limpiarPantalla.
 Este método simplemente creará un bucle de unas 30 repeticiones y
en cada repetición introducirá una línea en planco en la pantalla, haciendo el
efecto de que se borra toda la pantalla. No ha de devolver nada.

Es más fácil de lo que parece:
1
2
3
4
public static void limpiarPantalla() {
		for (int i = 0; i < 30; i++)
			System.out.println();
	}

Por último:
1
2
3
4
pulsarIntro.
Este método mostrará un mensaje pidiendo que se pulse la tecla intro
tras lo cual se quedará en espera y una vez que se pulse la aplicación continuará.
No ha de devolver nada.
Esto es útil para detener la ejecución de un programa hasta que el usuario pulse intro, así puede ver lo que hay escrito en pantalla antes de continuar.
Para hacerlo basta con invocar un nextLine() y el programa se parará hasta que se pulse intro.
Tiene la pega de que el usuario en ese momento, puede escribir cosas en pantalla y marranearlo todo..., pero bueno, es lo que hay. Java es un poco limitado en controlar lo que ocurre cuanto trabaja en modo consola.

Es muy simple:
1
2
3
4
public static void pulsarIntro(String mensaje) {
		System.out.print(mensaje);
		teclado.nextLine();
	}

Y un ejemplo de uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Prueba {
 
	public static void main(String[] args) {
 
		System.out.println("La pizza con piña es un manjar");
		boolean deAcuerdo = Herramientas.introduceSiNo();
 
		System.out.println("\nEvaluando respuesta...");
		System.out.println(deAcuerdo?"¡Jesús!, que salvaje":"Equelicuá... ");
 
		Herramientas.pulsarIntro("\nPulse INTRO para limpiar pantalla y terminar.");
 
		Herramientas.limpiarPantalla();
	}
 
}

Y eso es todo.
Cualquier duda solo tenéis que preguntar.

Un saludo gente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 20/11/2022 22:01:24
Muchas gracias y muy buena explicación.

El único que no me sale es el de la fecha, me da errores y no se por qué.
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 Francisco

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Francisco (8 intervenciones) el 20/11/2022 22:19:41
Voy a intentarlo! Eres un crack!
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Kabuto (1381 intervenciones) el 20/11/2022 22:23:04
Muestra tu código y/o el mensaje de error que te está dando.

Recordad que hay que importar la clase LocalDate para poder usarla.

1
import java.time.LocalDate;
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 20/11/2022 22:29:59
Si, el import java.time.LocalDate; lo he importado, y luego el código sería así?

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
public static localDate IntroduceFecha(){
 
        localDate fecha = null;
 
        while(fecha == null){
 
            System.out.println("Introduzca los siguientes datos para ver fecha: ");
 
            int dia = introduceInt("Dia: ");
            int mes = introduceInt("Mes: ");
            int año = introduceInt("Año: ");
 
            try{
 
                fecha = LocalDate.of( año, mes, dia);
 
            }
 
        catch(Exception ex){
 
                System.out.println("ERROR, introduce un valor númerico aceptado: ");
 
            }
 
        }
 
        return 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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Kabuto (1381 intervenciones) el 21/11/2022 17:31:18
Ahí lo que puede estar fallando es lo que marco en negrita:
1
2
3
public static localDate IntroduceFecha(){
 
        localDate fecha = null;


En Java hay unas convenciones (unas costumbres por así decirlo) y estas dicen que los nombres de las clases han de empezar por mayúscula.
Luego ya el programador decide si respeta o no esas convenciones con las clases que él escriba (lo mejor es respetar) pero sí hay que tenerlo en cuenta cuando usamos clases escritas por otros.

La clase LocalDate está escrita según las convenciones, así que para referirnos a ella tenemos que escribirla correctamente.
Como tú la has escrito con la primera letra minúscula, pues el compilador no sabe a qué clase te está refiriendo, ya que el no sabe nada de ninguna clase localDate. Él la clase que conoce es LocalDate y no es la que le has indicado.

Otra convención dice además que los nombres de los métodos y de las variables/objetos, han de comenzar por minúscula. Así al leer el código enseguida distinguimos lo que es un nombre de una Clase y lo que es un método o una variable

Corrige el nombre de la clase, y si quieres ya puestos, también el del método:
1
2
3
public static LocalDate introduceFecha(){
 
        LocalDate fecha = null;
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
sin imagen de perfil

Atascado en este ejercicio de métodos y clases en JAVA

Publicado por Juan José (8 intervenciones) el 22/11/2022 16:27:00
Gracias me ha funcionado!
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