Gracias, al final conseguí solucionarlo. Implemente algunas ideas que me dejaste y añadí nuevas cosas y conseguí realizarlo.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúpackage ejercicio1;
public class Ejercicio1 {
public static void main(String[] args) {
// Definimos variables y constantes
final int SOBREPESO = 1;
final int INFRAPESO = -1;
final int PESOIDEAL = 0;
Entrada entrada= new Entrada();
String nombre;
int edad;
String sexo;
float peso;
float altura;
// Obtenemos datos de la persona
System.out.println("Obtencion de datos");
System.out.println("------------------");
nombre = entrada.obtenerString("Dame el nombre de la persona:");
edad = entrada.obtenerEntero("Dame la edad de " + nombre);
sexo = entrada.obtenerString("Dime el sexo de " + nombre);
peso = entrada.obtenerFloat("Dime el peso de " + nombre);
altura = entrada.obtenerFloat("Dame la altura para " + nombre);
// Creamos las personas con los distintos constructores
System.out.println("\nCreando las personas");
System.out.println("--------------------");
Persona p1 = new Persona();
System.out.println("Persona 1 creada!");
Persona p2 = new Persona(nombre, edad, sexo);
System.out.println("Persona 2 creada!");
Persona p3 = new Persona(nombre, edad, sexo, peso, altura);
System.out.println("Persona 3 creada!");
//Mostramos la relacion de peso
System.out.println("\nMostrando relacion de pesos");
System.out.println("---------------------------");
System.out.print("El peso de la persona 1 es: ");
switch (p1.calcularIMC()) {
case SOBREPESO:
System.out.println("SOBREPESO");
break;
case INFRAPESO:
System.out.println("INFRAPESO");
break;
case PESOIDEAL:
System.out.println("PESOIDEAL");
break;
}
System.out.print("El peso de la persona 2 es: ");
switch (p2.calcularIMC()) {
case SOBREPESO:
System.out.println("SOBREPESO");
break;
case INFRAPESO:
System.out.println("INFRAPESO");
break;
case PESOIDEAL:
System.out.println("PESOIDEAL");
break;
}
System.out.print("El peso de la persona 3 es: ");
switch (p3.calcularIMC()) {
case SOBREPESO:
System.out.println("SOBREPESO");
break;
case INFRAPESO:
System.out.println("INFRAPESO");
break;
case PESOIDEAL:
System.out.println("PESOIDEAL");
break;
}
// Mostramos la mayoria de edad
System.out.println("\nMostrando mayorias de edad");
System.out.println("--------------------------");
System.out.println("La persona 1 es: " + (p1.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
System.out.println("La persona 2 es: " + (p2.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
System.out.println("La persona 3 es: " + (p3.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
// Mostramos todos los datos con el metodo toString() que ha sido Override
System.out.println("\nMostrando todos los datos");
System.out.println("-------------------------");
System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
}
}
package ejercicio1;
import java.util.Scanner;
public class Entrada {
private Scanner entrada = new Scanner(System.in);
public int obtenerEntero(String msg) {
boolean loop = true;
int valor=0;
String teclado;
do {
try {
System.out.println(msg);
teclado = entrada.nextLine();
valor = Integer.parseInt(teclado);
loop = false;
} catch (Exception e) {
System.out.println("El valor introducido debe ser un numero entero!!!");
}
} while (loop);
return valor;
}
public float obtenerFloat(String msg) {
boolean loop = true;
float valor=0;
String teclado;
do {
try {
System.out.println(msg);
teclado = entrada.nextLine();
valor = Float.parseFloat(teclado);
loop = false;
} catch (Exception e) {
System.out.println("El valor introducido debe ser un numero decimal!!!");
}
} while (loop);
return valor;
}
public String obtenerString(String msg) {
System.out.println(msg);
return entrada.nextLine();
}
public char obtenerChar(String msg) {
System.out.println(msg);
return entrada.nextLine().charAt(0);
}
}
package ejercicio1;
public class Persona {
private final static char DEFAULT_SEX = 'H';
private final static int SOBREPESO = 1;
private final static int INFRAPESO = -1;
private final static int PESOIDEAL = 0;
private String nombre;
private int edad;
private int DNI;
private char letraDNI;
private char sexo;
private float peso;
private float altura;
public Persona(){
nombre = "";
edad = 0;
DNI = generaDNI();
letraDNI= generaLetraDNI();
sexo = DEFAULT_SEX;
peso = 0;
altura = 0;
}
public Persona(String nombre,int edad,String sexo){
this.nombre = nombre;
this.edad = edad;
DNI = generaDNI();
letraDNI = generaLetraDNI();
this.sexo = comprobarSexo(sexo.charAt(0));
peso = 0;
altura = 0;
}
public Persona(String nombre,int edad,String sexo, float peso, float altura){
this.nombre = nombre;
this.edad = edad;
this.DNI = generaDNI();
letraDNI = generaLetraDNI();
this.sexo = comprobarSexo(sexo.charAt(0));
this.peso = peso;
this.altura = altura;
}
public int calcularIMC(){
float imc = this.peso/(int)Math.pow(this.altura/100,2);
if (imc>=25) return SOBREPESO;
else if (imc<18.5) return INFRAPESO;
else return PESOIDEAL;
}
public boolean esMayorDeEdad(){
return (this.edad>=18) ? true : false ;
}
public String toString(){
return "Los datos de la persona son:\n" +
"Nombre: " + this.nombre + "\n" +
"Edad: " + this.edad + "\n" +
"DNI : " + this.DNI + "-" + this.letraDNI + "\n" +
"Sexo: " + ( (this.sexo=='H') ? "Hombre":"Mujer" ) + "\n" +
"Peso: " + this.peso + "\n" +
"Altura: " + this.altura + "\n";
}
private char comprobarSexo(char sexo){
if(sexo=='M' || sexo=='m') return 'M';
else return 'H';
}
private int generaDNI(){
return (int)(Math.random()*100000000);
}
private char generaLetraDNI(){
String letras = "TRWAGMYFPDXBNJZSQVHLCKE";
return letras.charAt(this.DNI%23);
}
}