elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: [1]
1  Programación / Java / Ayuda con programa java en: 1 Febrero 2018, 14:31 pm
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:
Código
  1. package ejercicio1;
  2.  
  3. public class Ejercicio1 {
  4.  
  5. public static void main(String[] args) {
  6.  
  7.  
  8. // Definimos variables y constantes
  9. final int SOBREPESO = 1;
  10. final int INFRAPESO = -1;
  11. final int PESOIDEAL = 0;
  12.  
  13. Entrada entrada= new Entrada();
  14.  
  15. String nombre;
  16. int edad;
  17. String sexo;
  18. float peso;
  19. float altura;
  20.  
  21. // Obtenemos datos de la persona
  22. System.out.println("Obtencion de datos");
  23. System.out.println("------------------");
  24. nombre = entrada.obtenerString("Dame el nombre de la persona:");
  25. edad = entrada.obtenerEntero("Dame la edad de " + nombre);
  26. sexo = entrada.obtenerString("Dime el sexo de " + nombre);
  27. peso = entrada.obtenerFloat("Dime el peso de " + nombre);
  28. altura = entrada.obtenerFloat("Dame la altura para " + nombre);
  29.  
  30. // Creamos las personas con los distintos constructores
  31. System.out.println("\nCreando las personas");
  32. System.out.println("--------------------");
  33. Persona p1 = new Persona();
  34. System.out.println("Persona 1 creada!");
  35. Persona p2 = new Persona(nombre, edad, sexo);
  36. System.out.println("Persona 2 creada!");
  37. Persona p3 = new Persona(nombre, edad, sexo, peso, altura);
  38. System.out.println("Persona 3 creada!");
  39.  
  40. //Mostramos la relacion de peso
  41. System.out.println("\nMostrando relacion de pesos");
  42. System.out.println("---------------------------");
  43. System.out.print("El peso de la persona 1 es: ");
  44.  
  45. switch (p1.calcularIMC()) {
  46.  
  47. case SOBREPESO:
  48. System.out.println("SOBREPESO");
  49. break;
  50. case INFRAPESO:
  51. System.out.println("INFRAPESO");
  52. break;
  53. case PESOIDEAL:
  54. System.out.println("PESOIDEAL");
  55. break;
  56. }
  57.  
  58. System.out.print("El peso de la persona 2 es: ");
  59.  
  60. switch (p2.calcularIMC()) {
  61.  
  62. case SOBREPESO:
  63. System.out.println("SOBREPESO");
  64. break;
  65. case INFRAPESO:
  66. System.out.println("INFRAPESO");
  67. break;
  68. case PESOIDEAL:
  69. System.out.println("PESOIDEAL");
  70. break;
  71.  
  72. }
  73.  
  74. System.out.print("El peso de la persona 3 es: ");
  75.  
  76. switch (p3.calcularIMC()) {
  77.  
  78. case SOBREPESO:
  79. System.out.println("SOBREPESO");
  80. break;
  81. case INFRAPESO:
  82. System.out.println("INFRAPESO");
  83. break;
  84. case PESOIDEAL:
  85. System.out.println("PESOIDEAL");
  86. break;
  87.  
  88. }
  89.  
  90. // Mostramos la mayoria de edad
  91. System.out.println("\nMostrando mayorias de edad");
  92. System.out.println("--------------------------");
  93. System.out.println("La persona 1 es: " + (p1.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  94. System.out.println("La persona 2 es: " + (p2.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  95. System.out.println("La persona 3 es: " + (p3.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  96.  
  97. // Mostramos todos los datos con el metodo toString() que ha sido Override
  98. System.out.println("\nMostrando todos los datos");
  99. System.out.println("-------------------------");
  100. System.out.println(p1.toString());
  101. System.out.println(p2.toString());
  102. System.out.println(p3.toString());
  103. }
  104.  
  105. }
  106.  

Entrada:
Código
  1. package ejercicio1;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Entrada {
  6.  
  7. private Scanner entrada = new Scanner(System.in);
  8.  
  9. public int obtenerEntero(String msg) {
  10. boolean loop = true;
  11. int valor=0;
  12. String teclado;
  13.  
  14. do {
  15. try {
  16. System.out.println(msg);
  17. teclado = entrada.nextLine();
  18. valor = Integer.parseInt(teclado);
  19. loop = false;
  20. } catch (Exception e) {
  21. System.out.println("El valor introducido debe ser un numero entero!!!");
  22. }
  23. } while (loop);
  24. return valor;
  25. }
  26.  
  27. public float obtenerFloat(String msg) {
  28. boolean loop = true;
  29. float valor=0;
  30. String teclado;
  31.  
  32. do {
  33. try {
  34. System.out.println(msg);
  35. teclado = entrada.nextLine();
  36. valor = Float.parseFloat(teclado);
  37. loop = false;
  38. } catch (Exception e) {
  39. System.out.println("El valor introducido debe ser un numero decimal!!!");
  40. }
  41. } while (loop);
  42. return valor;
  43. }
  44.  
  45. public String obtenerString(String msg) {
  46. System.out.println(msg);
  47. return entrada.nextLine();
  48. }
  49.  
  50. public char obtenerChar(String msg) {
  51. System.out.println(msg);
  52. return entrada.nextLine().charAt(0);
  53. }
  54.  
  55. }
  56.  

Persona:
Código
  1. package ejercicio1;
  2.  
  3. public class Persona {
  4.  
  5. private final static char DEFAULT_SEX = 'H';
  6.  
  7. private final static int SOBREPESO = 1;
  8. private final static int INFRAPESO = -1;
  9. private final static int PESOIDEAL = 0;
  10.  
  11. private String nombre;
  12. private int edad;
  13. private int DNI;
  14. private char letraDNI;
  15. private char sexo;
  16. private float peso;
  17. private float altura;
  18.  
  19. public Persona(){
  20. nombre = "";
  21. edad = 0;
  22. DNI = generaDNI();
  23. letraDNI= generaLetraDNI();
  24. sexo = DEFAULT_SEX;
  25. peso = 0;
  26. altura = 0;
  27. }
  28.  
  29. public Persona(String nombre,int edad,String sexo){
  30. this.nombre = nombre;
  31. this.edad = edad;
  32. DNI = generaDNI();
  33. letraDNI = generaLetraDNI();
  34. this.sexo = comprobarSexo(sexo.charAt(0));
  35. peso = 0;
  36. altura = 0;
  37. }
  38.  
  39. public Persona(String nombre,int edad,String sexo, float peso, float altura){
  40. this.nombre = nombre;
  41. this.edad = edad;
  42. this.DNI = generaDNI();
  43. letraDNI = generaLetraDNI();
  44. this.sexo = comprobarSexo(sexo.charAt(0));
  45. this.peso = peso;
  46. this.altura = altura;
  47. }
  48.  
  49. public int calcularIMC(){
  50. float imc = this.peso/(int)Math.pow(this.altura/100,2);
  51. if (imc>=25) return SOBREPESO;
  52. else if (imc<18.5) return INFRAPESO;
  53. else return PESOIDEAL;
  54. }
  55.  
  56. public boolean esMayorDeEdad(){
  57. return (this.edad>=18) ? true : false ;
  58. }
  59.  
  60. public String toString(){
  61.  
  62. return "Los datos de la persona son:\n" +
  63. "Nombre: " + this.nombre + "\n" +
  64. "Edad: " + this.edad + "\n" +
  65. "DNI : " + this.DNI + "-" + this.letraDNI + "\n" +
  66. "Sexo: " + ( (this.sexo=='H') ? "Hombre":"Mujer" ) + "\n" +
  67. "Peso: " + this.peso + "\n" +
  68. "Altura: " + this.altura + "\n";
  69. }
  70.  
  71. private char comprobarSexo(char sexo){
  72. if(sexo=='M' || sexo=='m') return 'M';
  73. else return 'H';
  74. }
  75.  
  76. private int generaDNI(){
  77. return (int)(Math.random()*100000000);
  78. }
  79.  
  80. private char generaLetraDNI(){
  81. String letras = "TRWAGMYFPDXBNJZSQVHLCKE";
  82. return letras.charAt(this.DNI%23);
  83. }
  84.  
  85. }
  86.  

Espero que puedan ayudarme.

Un saludo.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines