Autor
|
Tema: Ayuda con programa java (Leído 2,629 veces)
|
Asking4java
Desconectado
Mensajes: 2
|
Buenas tengo un problema con un programa en java. 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: 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(); int edad; 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()); } }
Entrada: 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; do { try { teclado = entrada.nextLine(); loop = false; 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; do { try { teclado = entrada.nextLine(); valor = Float. parseFloat(teclado ); loop = false; System. out. println("El valor introducido debe ser un numero decimal!!!"); } } while (loop); return valor; } return entrada.nextLine(); } public char obtenerChar (String msg ) { return entrada.nextLine().charAt(0); } }
Persona: 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; } 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 ; } 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); } }
Espero que puedan ayudarme. Un saludo.
|
|
« Última modificación: 23 Febrero 2018, 12:27 pm por Asking4java »
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.218
(e -> λ("live now")); tatuar -> λ("α");
|
tus 2 primeros constructores están con valores por default a cero , null etc, y quizás por ahí el detalle, aunque aun no se exactamente el issue que tu ves, por tu descripción del mismo.
Ajustando ambos constructores me imagino que quieres que solo se llene una persona por ti, y los demás de manera aleatoria, si es así ? entonces esos 2 constructores deberían llenarse de manera Aleatoria.
public Persona(){ nombre = getRandomNomb(); edad = getRandomAge(); DNI = generaDNI(); letraDNI = generaLetraDNI(); sexo = DEFAULT_SEX; peso = getRandomWeight(); altura = getRandomHeight(); } this.nombre = getRandomNomb(); this.edad = getRandomAge(); DNI = generaDNI(); letraDNI = generaLetraDNI(); this.sexo = comprobarSexo(sexo.charAt(0)); peso = getRandomWeight(); altura = getRandomHeight(); }
import java.security.SecureRandom; import java.text.DecimalFormat; 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 static final String NOMBRES [] = {"Pedro", "Asking4java", "Raul", "Asking4java", "rubn"}; private static final Float MIN = 5.0f ;//peso minimo private static final Float MAX = 150.0f ; //peso max private int edad; private int DNI; private char letraDNI; private char sexo; private float peso; private float altura; public Persona(){ nombre = getRandomNomb(); edad = getRandomAge(); DNI = generaDNI(); letraDNI= generaLetraDNI(); sexo = DEFAULT_SEX; peso = getRandomWeight(); altura = getRandomHeight(); } this.nombre = getRandomNomb(); this.edad = getRandomAge(); DNI = generaDNI(); letraDNI = generaLetraDNI(); this.sexo = comprobarSexo(sexo.charAt(0)); peso = getRandomWeight(); altura = getRandomHeight(); } 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 = peso / (int)Math. pow(this. altura, 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 ; } return "Los datos de la persona "+( ++ count )+" 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); } //add Random names private String getRandomNomb () { return NOMBRES[SR.nextInt(NOMBRES.length)]; } //add Random ages return 4 + SR.nextInt(50); } //add Random weight private Float getRandomWeight () { final Float w = SR. nextFloat() * (MAX - MIN ) + MIN ; return Float. valueOf(dosDigi. format(w ). replace(",", ".")); } //add Random fake height private Float getRandomHeight () { //formateo 2 decimales final Float a = 1 + SR. nextFloat(); return Float. valueOf(dosDigi. format(a ). replace(",", ".")); } }
Otra cosa para calcular el indice de masa muscular, distinto a la linea 50 de tu clase Persona, tenia un 100 no c xq
(IMC = peso [kg]/ estatura ^ 2 )
public int calcularIMC(){ float imc = peso / (int)Math. pow(this. altura, 2); if (imc>=25) return SOBREPESO; else if (imc<18.5) return INFRAPESO; else return PESOIDEAL; }
import javax.swing.*; import java.awt.*; public class TestExec { // Definimos variables y constantes final int SOBREPESO = 1; final int INFRAPESO = -1; final int PESOIDEAL = 0; EntradaScanner entrada= new EntradaScanner(); int edad; 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("-------------------------"); final String pp1 = p1. toString(); final String pp2 = p2. toString(); final String pp3 = p3. toString(); final StringBuilder sb = new StringBuilder(); sb.append(pp1).append("\n"); sb.append(pp2).append("\n"); sb.append(pp3).append("\n"); textArea.setText(sb.toString()); textArea.setEditable(false); } }
OutputObtencion de datos ------------------ Dame el nombre de la persona: Ruben Dame la edad de Ruben 20 Dime el sexo de Ruben H Dime el peso de Ruben 70 Dame la altura para Ruben 1.80 Creando las personas -------------------- Persona 1 creada! Persona 2 creada! Persona 3 creada! Mostrando relacion de pesos --------------------------- El peso de la persona 1 es: INFRAPESO El peso de la persona 2 es: SOBREPESO El peso de la persona 3 es: PESOIDEAL Mostrando mayorias de edad -------------------------- La persona 1 es: Mayor de edad La persona 2 es: Menor de edad La persona 3 es: Mayor de edad Mostrando todos los datos ------------------------- Los datos de la persona 1 son: Nombre: Asking4java Edad: 42 DNI : 46699932-L Sexo: Hombre Peso: 6.25 Altura: 1.28 Los datos de la persona 2 son: Nombre: Pedro Edad: 10 DNI : 42140392-E Sexo: Hombre Peso: 119.02 Altura: 1.14 Los datos de la persona 3 son: Nombre: Ruben Edad: 20 DNI : 47758856-T Sexo: Hombre Peso: 70.0 Altura: 1.8
Y otra cosa me gusta el Bodybuilding y la formula de calcular el IMC no lo es todo hay otros factores como % de grasa corporal, que indican que una persona con mayor IMC de 25 estéticamente no se vea mal, dado que tiene mas musculo que grasa, e inclusive también este saludable.
|
|
« Última modificación: 26 Febrero 2018, 21:12 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
Asking4java
Desconectado
Mensajes: 2
|
Gracias, al final conseguí solucionarlo. Implemente algunas ideas que me dejaste y añadí nuevas cosas y conseguí realizarlo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con programa de java...
Java
|
Dulcrash
|
7
|
5,714
|
8 Noviembre 2008, 09:35 am
por juancho77
|
|
|
Ayuda programa en java
Ejercicios
|
SOADOSK
|
0
|
2,490
|
9 Enero 2013, 01:00 am
por SOADOSK
|
|
|
Ayuda con un programa en java
Ejercicios
|
NeZeX07
|
1
|
3,896
|
26 Febrero 2013, 17:49 pm
por 1mpuls0
|
|
|
Ayuda programa Java
Java
|
CoYoTeDaN
|
3
|
2,612
|
21 Febrero 2013, 10:21 am
por CoYoTeDaN
|
|
|
AYUDA CON PROGRAMA EN JAVA
Ejercicios
|
wilvel09
|
2
|
4,999
|
15 Abril 2013, 18:52 pm
por wilvel09
|
|