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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con programa java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa java  (Leído 2,437 veces)
Asking4java

Desconectado Desconectado

Mensajes: 2


Ver Perfil
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.


« Última modificación: 23 Febrero 2018, 12:27 pm por Asking4java » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ayuda con programa java
« Respuesta #1 en: 1 Febrero 2018, 16:54 pm »


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.



Código
  1. public Persona(){
  2.  nombre   = getRandomNomb();
  3.  edad   = getRandomAge();
  4.  DNI   = generaDNI();
  5.  letraDNI = generaLetraDNI();
  6.  sexo   = DEFAULT_SEX;
  7.  peso   = getRandomWeight();
  8.  altura   = getRandomHeight();
  9. }
  10.  
  11. public Persona(String nombre, int edad, String sexo){
  12.  this.nombre = getRandomNomb();
  13.  this.edad = getRandomAge();
  14.  DNI = generaDNI();
  15.  letraDNI = generaLetraDNI();
  16.  this.sexo = comprobarSexo(sexo.charAt(0));
  17.  peso = getRandomWeight();
  18.  altura = getRandomHeight();
  19. }
  20.  

Código
  1.  
  2. import java.security.SecureRandom;
  3. import java.text.DecimalFormat;
  4.  
  5. public class Persona {
  6.  
  7.        private final static char DEFAULT_SEX = 'H';
  8.  
  9.        private final static int SOBREPESO = 1;
  10.        private final static int INFRAPESO = -1;
  11.        private final static int PESOIDEAL = 0;
  12.  
  13.        private static final String NOMBRES[] = {"Pedro","Asking4java","Raul","Asking4java","rubn"};
  14.  
  15.        private static final Float MIN = 5.0f;//peso minimo
  16.        private static final Float MAX = 150.0f; //peso max
  17.  
  18.        private static final SecureRandom SR = new SecureRandom();
  19.        private static final DecimalFormat dosDigi = new DecimalFormat("#.##");
  20.  
  21.        private String nombre;
  22.        private int edad;
  23.        private int DNI;
  24.        private char letraDNI;
  25.        private char sexo;
  26.        private float peso;
  27.        private float altura;
  28.        private static Integer count = 0;
  29.  
  30.        public Persona(){
  31.            nombre = getRandomNomb();
  32.            edad = getRandomAge();
  33.            DNI = generaDNI();
  34.            letraDNI= generaLetraDNI();
  35.            sexo = DEFAULT_SEX;
  36.            peso = getRandomWeight();
  37.            altura = getRandomHeight();
  38.        }
  39.  
  40.        public Persona(String nombre, int edad, String sexo){
  41.            this.nombre = getRandomNomb();
  42.            this.edad = getRandomAge();
  43.            DNI = generaDNI();
  44.            letraDNI = generaLetraDNI();
  45.            this.sexo = comprobarSexo(sexo.charAt(0));
  46.            peso = getRandomWeight();
  47.            altura = getRandomHeight();
  48.        }
  49.  
  50.        public Persona(String nombre, int edad, String sexo, float peso, float altura){
  51.            this.nombre = nombre;
  52.            this.edad = edad;
  53.            this.DNI = generaDNI();
  54.            letraDNI = generaLetraDNI();
  55.            this.sexo = comprobarSexo(sexo.charAt(0));
  56.            this.peso = peso;
  57.            this.altura = altura;
  58.        }
  59.  
  60.        public int calcularIMC(){
  61.            float imc = peso / (int)Math.pow(this.altura,2);
  62.            if (imc>=25) return SOBREPESO;
  63.            else if (imc<18.5) return INFRAPESO;
  64.            else return PESOIDEAL;
  65.        }
  66.  
  67.        public boolean esMayorDeEdad(){
  68.            return (this.edad>=18) ? true : false ;
  69.        }
  70.  
  71.        public String toString(){
  72.  
  73.            return "Los datos de la persona "+( ++ count )+" son:\n" +
  74.                    "Nombre: " + this.nombre + "\n" +
  75.                    "Edad: " + this.edad + "\n" +
  76.                    "DNI : " + this.DNI + "-" + this.letraDNI + "\n" +
  77.                    "Sexo: " + ( (this.sexo=='H') ? "Hombre":"Mujer" ) + "\n" +
  78.                    "Peso: " + this.peso + "\n" +
  79.                    "Altura: " + this.altura + "\n";
  80.        }
  81.  
  82.        private char comprobarSexo(char sexo){
  83.            if(sexo=='M' || sexo=='m') return 'M';
  84.            else return 'H';
  85.        }
  86.  
  87.        private int generaDNI(){
  88.            return (int)(Math.random()*100000000);
  89.        }
  90.  
  91.        private char generaLetraDNI(){
  92.            String letras = "TRWAGMYFPDXBNJZSQVHLCKE";
  93.            return letras.charAt(this.DNI%23);
  94.        }
  95.  
  96.        //add Random names
  97.        private String getRandomNomb() {
  98.            return NOMBRES[SR.nextInt(NOMBRES.length)];
  99.        }
  100.        //add Random ages
  101.        private Integer getRandomAge() {
  102.            return 4 + SR.nextInt(50);
  103.        }
  104.        //add Random weight
  105.        private Float getRandomWeight() {
  106.            final Float w = SR.nextFloat() * (MAX - MIN) + MIN;
  107.            return Float.valueOf(dosDigi.format(w).replace(",","."));
  108.        }
  109.        //add Random fake height
  110.        private Float getRandomHeight() {
  111.            //formateo 2 decimales
  112.            final Float a = 1 + SR.nextFloat();
  113.            return Float.valueOf(dosDigi.format(a).replace(",","."));
  114.        }
  115. }
  116.  
  117.  

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 )
Código
  1. public int calcularIMC(){
  2.            float imc = peso / (int)Math.pow(this.altura,2);
  3.            if (imc>=25) return SOBREPESO;
  4.            else if (imc<18.5) return INFRAPESO;
  5.            else return PESOIDEAL;
  6. }
  7.  

Código
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4.  
  5. public class TestExec {
  6.  
  7.        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  8.  
  9.        // Definimos variables y constantes
  10.        final int SOBREPESO = 1;
  11.        final int INFRAPESO = -1;
  12.        final int PESOIDEAL = 0;
  13.  
  14.        TextArea textArea = new TextArea();
  15.        EntradaScanner entrada= new EntradaScanner();
  16.  
  17.        String nombre;
  18.        int edad;
  19.        String sexo;
  20.        float peso;
  21.        float altura;
  22.  
  23.        // Obtenemos datos de la persona
  24.        System.out.println("Obtencion de datos");
  25.        System.out.println("------------------");
  26.        nombre = entrada.obtenerString("Dame el nombre de la persona:");
  27.        edad = entrada.obtenerEntero("Dame la edad de " + nombre);
  28.        sexo = entrada.obtenerString("Dime el sexo de " + nombre);
  29.        peso = entrada.obtenerFloat("Dime el peso de " + nombre);
  30.        altura = entrada.obtenerFloat("Dame la altura para " + nombre);
  31.  
  32.        // Creamos las personas con los distintos constructores
  33.        System.out.println("\nCreando las personas");
  34.        System.out.println("--------------------");
  35.        Persona p1 = new Persona();
  36.        System.out.println("Persona 1 creada!");
  37.        Persona p2 = new Persona(nombre, edad, sexo);
  38.        System.out.println("Persona 2 creada!");
  39.        Persona p3 = new Persona(nombre, edad, sexo, peso, altura);
  40.        System.out.println("Persona 3 creada!");
  41.  
  42.        //Mostramos la relacion de peso
  43.        System.out.println("\nMostrando relacion de pesos");
  44.        System.out.println("---------------------------");
  45.        System.out.print("El peso de la persona 1 es: ");
  46.  
  47.        switch (p1.calcularIMC()) {
  48.  
  49.            case SOBREPESO:
  50.                System.out.println("SOBREPESO");
  51.                break;
  52.            case INFRAPESO:
  53.                System.out.println("INFRAPESO");
  54.                break;
  55.            case PESOIDEAL:
  56.                System.out.println("PESOIDEAL");
  57.                break;
  58.        }
  59.  
  60.        System.out.print("El peso de la persona 2 es: ");
  61.  
  62.        switch (p2.calcularIMC()) {
  63.  
  64.            case SOBREPESO:
  65.                System.out.println("SOBREPESO");
  66.                break;
  67.            case INFRAPESO:
  68.                System.out.println("INFRAPESO");
  69.                break;
  70.            case PESOIDEAL:
  71.                System.out.println("PESOIDEAL");
  72.                break;
  73.  
  74.        }
  75.  
  76.        System.out.print("El peso de la persona 3 es: ");
  77.  
  78.        switch (p3.calcularIMC()) {
  79.  
  80.            case SOBREPESO:
  81.                System.out.println("SOBREPESO");
  82.                break;
  83.            case INFRAPESO:
  84.                System.out.println("INFRAPESO");
  85.                break;
  86.            case PESOIDEAL:
  87.                System.out.println("PESOIDEAL");
  88.                break;
  89.  
  90.        }
  91.  
  92.        // Mostramos la mayoria de edad
  93.        System.out.println("\nMostrando mayorias de edad");
  94.        System.out.println("--------------------------");
  95.        System.out.println("La persona 1 es: " + (p1.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  96.        System.out.println("La persona 2 es: " + (p2.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  97.        System.out.println("La persona 3 es: " + (p3.esMayorDeEdad() ? "Mayor de edad" : "Menor de edad"));
  98.  
  99.        // Mostramos todos los datos con el metodo toString() que ha sido Override
  100.        System.out.println("\nMostrando todos los datos");
  101.        System.out.println("-------------------------");
  102.        final String pp1 = p1.toString();
  103.        final String pp2 = p2.toString();
  104.        final String pp3 = p3.toString();
  105.  
  106.        System.out.println(pp1);
  107.        System.out.println(pp2);
  108.        System.out.println(pp3);
  109.  
  110.        final StringBuilder sb = new StringBuilder();
  111.        sb.append(pp1).append("\n");
  112.        sb.append(pp2).append("\n");
  113.        sb.append(pp3).append("\n");
  114.        textArea.setText(sb.toString());
  115.        textArea.setEditable(false);
  116.        JOptionPane.showMessageDialog(null,textArea,"Info",JOptionPane.INFORMATION_MESSAGE);
  117.    }
  118. }
  119.  
  120.  


Output

Código
  1. Obtencion de datos
  2. ------------------
  3. Dame el nombre de la persona:
  4. Ruben
  5. Dame la edad de Ruben
  6. 20
  7. Dime el sexo de Ruben
  8. H
  9. Dime el peso de Ruben
  10. 70
  11. Dame la altura para Ruben
  12. 1.80
  13.  
  14. Creando las personas
  15. --------------------
  16. Persona 1 creada!
  17. Persona 2 creada!
  18. Persona 3 creada!
  19.  
  20. Mostrando relacion de pesos
  21. ---------------------------
  22. El peso de la persona 1 es: INFRAPESO
  23. El peso de la persona 2 es: SOBREPESO
  24. El peso de la persona 3 es: PESOIDEAL
  25.  
  26. Mostrando mayorias de edad
  27. --------------------------
  28. La persona 1 es: Mayor de edad
  29. La persona 2 es: Menor de edad
  30. La persona 3 es: Mayor de edad
  31.  
  32. Mostrando todos los datos
  33. -------------------------
  34. Los datos de la persona 1 son:
  35. Nombre: Asking4java
  36. Edad: 42
  37. DNI : 46699932-L
  38. Sexo: Hombre
  39. Peso: 6.25
  40. Altura: 1.28
  41.  
  42. Los datos de la persona 2 son:
  43. Nombre: Pedro
  44. Edad: 10
  45. DNI : 42140392-E
  46. Sexo: Hombre
  47. Peso: 119.02
  48. Altura: 1.14
  49.  
  50. Los datos de la persona 3 son:
  51. Nombre: Ruben
  52. Edad: 20
  53. DNI : 47758856-T
  54. Sexo: Hombre
  55. Peso: 70.0
  56. Altura: 1.8
  57.  
  58.  
  59. Process finished with exit code 0
  60.  




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



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Asking4java

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con programa java
« Respuesta #2 en: 23 Febrero 2018, 12:29 pm »

Gracias, al final conseguí solucionarlo. Implemente algunas ideas que me dejaste y añadí nuevas cosas y conseguí realizarlo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con programa de java...
Java
Dulcrash 7 5,404 Último mensaje 8 Noviembre 2008, 09:35 am
por juancho77
Ayuda programa en java
Ejercicios
SOADOSK 0 2,324 Último mensaje 9 Enero 2013, 01:00 am
por SOADOSK
Ayuda con un programa en java
Ejercicios
NeZeX07 1 3,716 Último mensaje 26 Febrero 2013, 17:49 pm
por 1mpuls0
Ayuda programa Java
Java
CoYoTeDaN 3 2,411 Último mensaje 21 Febrero 2013, 10:21 am
por CoYoTeDaN
AYUDA CON PROGRAMA EN JAVA
Ejercicios
wilvel09 2 4,749 Último mensaje 15 Abril 2013, 18:52 pm
por wilvel09
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines