El programa solo tiene que pedirme datos de una persona y de las otras 2 personas generarlas aleatoriamente, pero en vez de eso, solo me rellena los datos de la persona que he introducido los datos y las otras 2 los deja o vacíos o copia los datos introducidos por mi.
¿Qué tendría que cambiar para que genere los datos de la persona1 y persona2 aleatoriamente?
Archivo principal:
Código
package ejercicio1; public class Ejercicio1 { // 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 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 Persona p1 = new Persona(); Persona p2 = new Persona(nombre, edad, sexo); Persona p3 = new Persona(nombre, edad, sexo, peso, altura); //Mostramos la relacion de peso switch (p1.calcularIMC()) { case SOBREPESO: break; case INFRAPESO: break; case PESOIDEAL: break; } switch (p2.calcularIMC()) { case SOBREPESO: break; case INFRAPESO: break; case PESOIDEAL: break; } switch (p3.calcularIMC()) { case SOBREPESO: break; case INFRAPESO: break; case PESOIDEAL: break; } // Mostramos la mayoria de edad // Mostramos todos los datos con el metodo toString() que ha sido Override } }
Entrada:
Código
package ejercicio1; import java.util.Scanner; public class Entrada { boolean loop = true; int valor=0; String teclado; do { try { teclado = entrada.nextLine(); loop = false; } } while (loop); return valor; } boolean loop = true; float valor=0; String teclado; do { try { teclado = entrada.nextLine(); loop = false; } } while (loop); return valor; } return entrada.nextLine(); } return entrada.nextLine().charAt(0); } }
Persona:
Código
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 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; } this.nombre = nombre; this.edad = edad; DNI = generaDNI(); letraDNI = generaLetraDNI(); this.sexo = comprobarSexo(sexo.charAt(0)); peso = 0; altura = 0; } 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(){ if (imc>=25) return SOBREPESO; else if (imc<18.5) return INFRAPESO; else return PESOIDEAL; } public boolean esMayorDeEdad(){ return (this.edad>=18) ? true : false ; } 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(){ } private char generaLetraDNI(){ return letras.charAt(this.DNI%23); } }
Espero que puedan ayudarme.
Un saludo.