Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Ayuda con un ejercicio en java

Hola amigos. Tengo un problema y es que no puedo solucionar este ejercicio de Java. ¿Alguien podría echarme una mano?:

Las tareas a realizar se centrarán en la creación de instancias de la clase Persona, la definición y utilización de métodos básicos tanto para Persona como para ES, y también el trabajo con constructores y parámetros.
Construye un proyecto usando el IDE NetBeans, en lenguaje Java, que defina la clase Persona, inicialmente tal y como se define a continuación:
public class Persona{
String nombre;
int edad;
float altura;
String ocupacion;
String telefono;

String getNombre(){
return this.nombre;
}

void setNombre(String nombre){
this.nombre=nombre;
}
}

Añade a la clase Persona del proyecto creado en el punto anterior los métodos consultores o de acceso (también llamados métodos get o simplemente getters) y métodos modificadores (también llamados métodos set o simplemente setters) que faltan para poder consultar y modificar el valor de todos los atributos de una persona. Para ello observa cómo se han creado los métodos del atributo nombre y determina los parámetros y resultado de los demás atributos.

Crea ahora un método constructor, sin parámetros, para la clase Persona , que cree una instancia de tipo Persona con los siguientes valores "por defecto" a sus atributos:

nombre <-- "Sin nombre"
edad <-- 0
altura <-- 0.0
ocupacion <-- "Sin determinar"
telefono <-- "000000000"
La idea es que sea una especie de "persona recién nacida", que existe, pero de la que aún no tenemos información.

Crea un nuevo constructor con parámetros para la clase Persona que inicialice los atributos del objeto con los valores que se le pasen como parámetros al invocar al constructor para crear un nuevo objeto, mediante el operador new. De momento aquí no tienes que crear el objeto ni usar new, sólo tienes que definir el método para que posteriormente eso sea posible.

Crea, dentro del mismo proyecto, una clase ES que usaremos para controlar la entrada y salida por consola (teclado y pantalla, en este caso). Se trata de que esta clase sirva como almacén de métodos útiles para realizar las operaciones de entrada salida, usando para la entrada la clase Scanner y sus métodos, encargándose de controlar los errores de entrada/salida que se pueden presentar mediante la captura y tratamiento de las excepciones que sean necesarias. En concreto, la clase ES debe contener:

Un método que permita introducir valores correctos de cada uno de los principales tipos básicos, de forma que si el valor introducido por teclado no se corresponde con el tipo esperado, se mande un mensaje de error al usuario, y se vuelva a solicitar el número, hasta que se introduzca un valor correcto. Eso implica la declaración de al menos los siguientes métodos:

leeEntero() para leer números int. Debe devolver, por tanto, un valor int válido.
leeEnteroLargo() para leer números long. Debe devolver, por tanto, un valor long válido.
leeReal() para leer números float. Debe devolver, por tanto, un valor float válido.
leeRealLargo() para leer números double. Debe devolver, por tanto, un valor double válido.

Un método leeRespuesta() para leer la respuesta a preguntas de respuesta Sí o No, del tipo "¿Desea continuar? (S/N): ". Debe devolver un carácter válido, pero sólo se aceptarán como válidos 'S', 's', 'N' y 'n'.

Un método leeCadena() que recoja un String leído desde teclado. Debe devolver por tanto el String leído.

Una versión adicional de cada uno de los métodos anteriores que permita pasarle como argumento un String con el mensaje que debe escribirse en pantalla solicitando al usuario el dato que el método va a leer. Por ejemplo, un método que pueda invocar como leeEntero("Introducir la edad de la persona: "); de forma que primero escribirá ese mensaje indicado como parámetro, luego esperará a que el usuario introduzca un número por teclado, comprobará si es un int válido, y si lo es, será lo que devolverá. Si no es válido, lo indicará con un mensaje de error, como antes, y volverá a solicitar la introducción del dato.

Una versión adicional para los métodos de lectura de números, que permita indicar como parámetro un valor mínimo aceptable, de forma que cualquier número introducido que sea menor que el mínimo, aunque sea un número correcto para ese tipo, sea descartado, indicando el motivo al usuario en un mensaje adecuado. Estos métodos permitirán también la introducción de un mensaje como parámetro para solicitar el dato.

Una versión adicional para los métodos de lectura de números, que permita indicar como parámetros tanto un valor mínimo como un valor máximo aceptables, de forma que cualquier número introducico que sea menor que el mínimo, o mayor que el máximo, aunque sea un número correcto para ese tipo, sea descartado, indicando el motivo al usuario en un mensaje adecuado. Estos métodos permitirán también la introducción de un mensaje como parámetro para solicitar el dato.

Un par de métodos equivalentes a System.out.print() y a System.out.println() que hagan exactamente lo mismo que hacen estos métodos, pero cuya escritura sea mucho más breve: ES.msg() y ES.msgln() serían respectivamente los nombres de estos nuevos métodos.

Crea una clase principal, que será la que usará las clases Persona y ES y sus métodos, con un método main() que ofrezca un menú como el siguiente:

Gestión de Personas.
================================
1.- Crear una nueva persona sin datos.
2.- Crear una nueva persona con datos conocidos.
3.- Asignar nombre a una persona.
4.- Asignar edad a una persona.
5.- Asignar altura a una persona.
6.- Mostrar por pantalla los datos de una persona.

0.- Salir de la aplicación.
================================
Introduzca la opción elegida:

Debes implementar la funcionalidad de cada una de las opciones del menú.

Para ello usaremos dos variables de tipo Persona, que llamaremos personaVacia y personaConDatos, usándose la primera para la opción 1 y la segunda para la opción 2.

Las opciones que asignan un valor (3 a 5) podrán hacerlo para cualquiera de las dos variables a tu elección, pero procura usar ambas variables entre esas opciones, que deben leer por teclado el valor a asignar, solicitándolo convenientemente al usuario, y asignarlo usando el método set correspondiente.

Estas opciones, antes de asignar el valor, comprobarán si el atributo tiene o no uno de los valores que se asignan por defecto a una persona vacía, y que aparecen en el punto 3 de la tarea. Si es así, escribirá sin más el nuevo valor. Sin embargo, si el atributo ya tenía cualquier otro valor distinto de los indicados por defecto, debe solicitar confirmación antes de sobreescribir el valor que había con el nuevo valor leído.

La opción de mostrar por pantalla los datos de una persona, lo hará mostrando uno a uno el valor de cada atributo recogido con el método get correspondiente, junto a un texto que indique de qué valor se trata.

Naturalmente, tras realizar cualquiera de las opciones de la 1 a la 6, el menú debe volverse a mostrar, permitiendo elegir una nueva opción, hasta que se introduzca la opción 0 para salir.
Incluye comentarios Javadoc para que sea posible generar de forma totalmente automática una documentación completa de las clases Persona y ES, incluyendo documentación completa de todos sus métodos.

Muchas gracias.

diciembre 20, 2013 | Registered Commenterjacksp

Guenas.

Primero inténtalo tu y si tienes dudas o te falla algo concreto seguro que en el foro te ayudaran.
Poner el enunciado del ejercicio y pedir que te lo resuelvan no te ayuda en nada.

El objetivo de un ejercicio es que aprendas, no entregarlo. Si no lo sabes ni empezar simplemente no debes aprobar.

Un saludo

diciembre 20, 2013 | Unregistered CommenterPaposo

Este es el código que yo llevo hecho. No quiero que me lo resuelvan, solo que me ayuden un poco. Estoy atascado y no sé seguir. No sé si lo estoy haciendo bien. Les adjunto y ya me cuentan:
Clase persona:
public class Persona {


String nombre;
int edad;
float altura;
String ocupacion;
String telefono;

String getNombre() {
return this.nombre;
}

void setNombre(String nombre) {
this.nombre = nombre;
}

int getEdad() {
return this.edad;
}

void setEdad(int edad) {
this.edad = edad;
}

float getAltura() {
return this.altura;
}

void setAltura(float altura) {
this.altura = altura;
}

String getOcupacion() {
return this.ocupacion;
}

void setOcupacion(String ocupacion) {
this.ocupacion = ocupacion;
}

String getTelefono() {
return this.telefono;
}

void setTelefono(String telefono) {
this.telefono = telefono;
}
/**Creamos los métodos de Persona*/
public static Persona Persona() {
return null;
}

public static Persona Persona(String nombre, int edad, float altura, String ocupacion,
String telefono) {
nombre = "Juanjo";
edad = 25;
altura = 1.75f;
ocupacion = "Escritor";
telefono = "612345678";
return null;

}


}
clase ES:
import java.util.InputMismatchException;
import java.util.Scanner;


public class ES {


int leeEntero() {
int numero = 0;
boolean condicion;
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("Escribe un número");
numero = teclado.nextInt();
condicion = false;
} catch (InputMismatchException e) {
System.out.println("Error");
condicion = true;
}
return (numero);
} while (condicion = true);
}

long leeEnteroLargo() {
long numero = 0;
boolean condicion;
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("Escribe un número");
numero = teclado.nextLong();
condicion = false;
} catch (InputMismatchException e) {
System.out.println("Error");
condicion = true;
}
return (numero);
} while (condicion = true);
}

float leeReal() {
float numero = 0;
boolean condicion;
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("Escribe un número");
numero = teclado.nextFloat();
condicion = false;
} catch (InputMismatchException e) {
System.out.println("Error");
condicion = true;
}
return (numero);
} while (condicion = true);
}

double leeRealLargo() {
double numero = 0;
boolean condicion;
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("Escribe un número");
numero = teclado.nextDouble();
condicion = false;
} catch (InputMismatchException e) {
System.out.println("Error");
condicion = true;
}
return (numero);
} while (condicion = true);
}

String leeRespuesta() {
String respuesta = "N";
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("¿si o no?");
respuesta = teclado.next();
} catch (InputMismatchException e) {
System.out.println("Error");
}
return (respuesta);
} while (!"n".equalsIgnoreCase(respuesta) & !"s".equalsIgnoreCase(respuesta));

}

static String leeCadena() {
String cadena = ("");
boolean condicion;
Scanner teclado = new Scanner(System.in);
do {
try {
System.out.println("Escribe una cadena de texto");
cadena = teclado.next();
condicion = false;
} catch (InputMismatchException e) {
System.out.println("Error");
condicion = true;
}
return cadena;
} while (condicion = true);
}
static void msg (String imprimir) {
System.out.print(imprimir);


}
static void msgln(String imprimirln) {
System.out.println(imprimirln);
}
}
clase proyecto:
import java.util.*; //importamos java.util

public class Tarea4 {


/**Ahora cramos el método main*/
public static void main(String[] args) {

int opcion;
boolean condicion1 = false;
boolean condicion2 = false;
boolean condicioncase = false;
Persona personaVacia = new Persona();
Persona personaConDatos = new Persona();
personaVacia = null;
personaConDatos = null;

do {
ES.msgln("Gestión de personas");
ES.msgln ("==================================================");
ES.msgln("1.- Crear una nueva persona sin datos.");
ES.msgln("2.- Crear una nueva persona con datos conocidos.");
ES.msgln("3.- Asignar nombre a una persona.");
ES.msgln("4.- Asignar edad a una persona.");
ES.msgln("5.- Asignar altura a una persona.");
ES.msgln("6.- Mostrar por pantalla los datos de una persona.");
ES.msgln("\n0.- Salir de la aplicación.");
ES.msgln("==================================================");
ES.msg("Introduzca la opción elegida:");
Scanner teclado = new Scanner(System.in);
opcion = teclado.nextInt();

switch (opcion) {
case 0:
System.out.println("Fin del programa");
condicioncase = true;
case 1:
personaVacia = Persona.Persona();
condicion1 = true;
condicioncase = false;
break;
case 2:
personaConDatos = Persona.Persona("Juanjo", 25, 1.75f, "Escritor", "612345678");
condicion2 = true;
break;
case 3:
if (condicion1 = true) {
personaVacia.getNombre();
} else {
if (condicion2 = true) {
personaConDatos.getNombre();
} else {
System.out.print("No hay persona creada");
}
}
break;
case 4:
if (condicion1 = true) {
personaVacia.getEdad();
} else {
if (condicion2 = true) {
personaConDatos.getEdad();
} else {
System.out.print("No hay persona creada");
}
}
break;
case 5:
if (condicion1 = true) {
personaVacia.getAltura();
} else {
if (condicion2 = true) {
personaConDatos.getAltura();
} else {
System.out.print("No hay persona creada");
}
}
break;
default:
System.out.println("La opción introducida es incorrecta");

}

} while (condicioncase = false);


}
}

Gracias por la respuesta, saludos.

diciembre 20, 2013 | Unregistered Commenterjacskp

yo estoy buscando algo parecido pero, verdad que con el comentario del incongruente mental de paposo, solo se entiende que es un infeliz!

octubre 20, 2016 | Unregistered Commenterale