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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Problemas con los array
« en: 26 Mayo 2018, 15:45 pm »

Hola gente quisiera saber si alguien puede darme un empujon con este codigo:

Código
  1. package buscar;
  2. import javax.swing.JOptionPane;
  3.  
  4. public class Buscar {
  5.  
  6.    public static void main(String[] args) {
  7.         boolean confirmacion = true;
  8.       int i,j =0;
  9.  
  10.    String [] jr = new String[2];//creamos un arreglo para nombres
  11.  
  12.   int [] gr = new int [2];// creamos un arreglo para telefono
  13.  
  14.   while (confirmacion ==true){  
  15.    int a = Integer.parseInt( JOptionPane.showInputDialog("\n______Agenda_____ \n"
  16.                + "1         Cargar Operarios\n"
  17.                + "2         Buscar Por Nombre\n"
  18.                + "3         Buscar Por Telefono\n"
  19.                + "4                Salir"));
  20.  
  21.        if (a ==1){    
  22.        String p = JOptionPane.showInputDialog(" Ingrese el nombre del Operario ");
  23.        JOptionPane.showMessageDialog(null,"Ingrese el telefono  de "+ p);  
  24.        for (i=0; i<jr.length-1;i++){
  25.  
  26.        jr [i+1] =p;
  27.        }
  28.  
  29.        for (j=0; j<gr.length-1; j++){
  30.  
  31.            int telefono = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono "));
  32.              gr[i+1]= telefono;
  33.        }
  34.  
  35.        }
  36.       if (a== 2){
  37.  
  38.           String oper= JOptionPane.showInputDialog(null, "Ingrese el nombre del operario a Buscar");
  39.          for(i =0; i<gr.length;i++){
  40.           if (jr[i] == oper && jr[i]!= oper){
  41.  
  42.               JOptionPane.showMessageDialog(null,"El telefono del operario "+oper+" es: "+jr[i] );
  43.  
  44.           }
  45.           else{
  46.               JOptionPane.showMessageDialog(null, "Aca estoy");
  47.           }
  48.          }
  49.  
  50.       if (a==3){
  51.         int  tel=Integer.parseInt( JOptionPane.showInputDialog(null, "Ingrese el telefono del operario a Buscar"));
  52.  
  53.         if (tel == gr[i]){
  54.             JOptionPane.showMessageDialog(null,"El operario es "+gr[i]);
  55.         }
  56.       }
  57.       if (a==4){
  58.           System.exit(0);
  59.       }
  60.   //como convertir un while a true o false usando JOptionPane confirm dialog....
  61.    //int  operacion = (JOptionPane.showConfirmDialog(null,"Desea cargar mas operarios y telefonos", "Confirmacion", JOptionPane.YES_NO_OPTION));
  62.           // if (operacion == 0){
  63.             //  confirmacion = true;
  64.            //}else
  65.               // if (operacion ==1 ){
  66.                  //  System.exit(0);
  67.  
  68.    }
  69.   }
  70.  
  71.    }
  72. }

la idea es que cargues operarios con su teléfono y luego a través del menú puedas buscarlos o por nombre o por el teléfono
el código se que esta algo bien pero no se donde esta el problema.
Gracias.


« Última modificación: 27 Mayo 2018, 00:13 am por Eleкtro » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.355


Ver Perfil
Re: Problemas con los array
« Respuesta #1 en: 26 Mayo 2018, 22:55 pm »

No está bien pedir que "te miren" el código.

Señala que te falla,que precisa mejora, donde te pierdes, que no te sale, que te falta y  uno se ciñe justo al punto concreto...


En línea

RRGT19

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Re: Problemas con los array
« Respuesta #2 en: 30 Mayo 2018, 06:57 am »

  • Variables llamadas jr, gr, oper, etc... qué significan?. Nunca uses variables con estos nombres ya que solamente tu podrás entender a qué se refieren.
  • Por qué usas un while en lugar de un do-while?. Tu menu siempre debe aparecer al menos una vez, cierto?, entonces, el do-while es la mejor opción ya que siempre va a ejecutarse al menos una vez sin importar la condición.
  • Por qué usas muchos if?. Tienes un menu con opciones entonces, un switch sería más fácil para tu ejercicio y más idóneo.
  • Qué pasa si quieres guardar infinitos operarios e infinitos teléfonos?. Crees que un array es la solución?. Lo idóneo es que uses ArrayList de tipo String o Integer y con el método .add() o .remove() podrás hacer cualquier cosa fácilmente sin tener que usar un for. En un ejercicio más trabajado, orientado a objetos, tendrías una clase con atributos.
  • Por qué todos son if y no usas else-if? Se supone que el usuario solo podrá acceder a una opción a la vez, no hay necesidad de evaluar la opción del menú en todos los if. Lo correcto sería usar else-if.
  • Debes encontrar la forma de avisarle al usuario cuando no se ha encontrado el nombre ingresado o el teléfono ingresado. Si lo haces dentro del for, mostrará el mensaje de "no encontrado" en cada iteración y puede llegar a molestar.
  • Tienes muchos errores, te voy a ayudar a arreglar tu ejercicio pero, no voy a solucionarte tu duda sobre cómo tener la posibilidad de agregar infinitos nombres y teléfonos ya que te he dicho cómo arriba y tu trabajo ahora es investigar.

Código arreglado y funcionando:

Código
  1. import javax.swing.JOptionPane;
  2.  
  3. public class SO {
  4.  
  5. public static void main(String[] args) {
  6. boolean confirmacion = true;
  7.  
  8. // int i, j = 0; Esto es innecesario
  9.  
  10. String[] nombres = new String[2];
  11.  
  12. int[] telefonos = new int[2];
  13.  
  14. while (confirmacion == true) {
  15. int a = Integer.parseInt(JOptionPane.showInputDialog(
  16. "\n______Agenda_____ \n" + "1         Cargar Operarios\n" + "2         Buscar Por Nombre\n"
  17. + "3         Buscar Por Telefono\n" + "4                Salir"));
  18.  
  19. if (a == 1) {
  20. String nombreOperario = JOptionPane.showInputDialog(" Ingrese el nombre del Operario ");
  21.  
  22. // Por qué tienes esto aquí si no hace nada?
  23. // JOptionPane.showMessageDialog(null, "Ingrese el telefono de " +
  24. // nombreOperario);
  25.  
  26. // Por qué haces length-1 y luego [i+1]? No tiene sentido para mí, lo
  27. // arreglaré...
  28. // Lo guardaré en la primera posición del arreglo
  29. // Asumiremos que solo se podrá guardar 1 solo nombre por el momento, luego lo
  30. // arreglas
  31. nombres[0] = nombreOperario;
  32.  
  33. // Por qué tienes la solicitud del número dentro del for?...
  34. // Se supone que es 1 solo número por operario, o no?...
  35. /*
  36. * for (j=0; j<gr.length-1; j++){
  37. *
  38. * int telefono =
  39. * Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono "
  40. * )); gr[i+1]= telefono; }
  41. */
  42.  
  43. // Debería ser así:
  44. int telefono = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono "));
  45. // Lo guardaré en la primera posición del arreglo
  46. // Asumiremos que solo se podrá guardar 1 solo telefono por el momento, luego lo
  47. // arreglas
  48. telefonos[0] = telefono;
  49.  
  50. }
  51.  
  52. else if (a == 2) {
  53.  
  54. String nombreOperario = JOptionPane.showInputDialog(null, "Ingrese el nombre del operario a Buscar");
  55.  
  56. // Si estás buscando por el nombre, por qué estás usando "telefonos"?
  57. // Debería ser con "nombres"
  58. // for (i = 0; i < telefonos.length; i++) {
  59.  
  60. for (int i = 0; i < nombres.length; i++) {
  61.  
  62. // La segunda no tiene sentido, por qué usas esto?
  63. // if (nombres[i] == nombreOperario && nombres[i] != nombreOperario) {
  64.  
  65. // Debería ser solamente esto...
  66. // Se usa .equals cuando se quiere comparar dos String's
  67. if (nombreOperario.equals(nombres[i])) {
  68.  
  69. // Por qué muestras "nombres[i]" en lugar del telefono?
  70. // JOptionPane.showMessageDialog(null, "El telefono del operario " +
  71. // nombreOperario + " es: " + nombres[i]);
  72.  
  73. // Debería ser...
  74. JOptionPane.showMessageDialog(null,
  75. "El telefono del operario " + nombreOperario + " es: " + telefonos[i]);
  76.  
  77. }
  78. }
  79. }
  80.  
  81. else if (a == 3) {
  82. int telefonoOperario = Integer
  83. .parseInt(JOptionPane.showInputDialog(null, "Ingrese el telefono del operario a Buscar"));
  84.  
  85. // Aquí te falta todo, vamos a hacerlo rápido...
  86.  
  87. for (int i = 0; i < telefonos.length; i++) {
  88.  
  89. if (telefonos[i] == telefonoOperario) {
  90.  
  91. // Por qué muestras "telefonos[i]" en lugar de nombres?
  92. // Vamos a arreglarlo...
  93. JOptionPane.showMessageDialog(null, "El operario es " + nombres[i]);
  94. }
  95. }
  96.  
  97. }
  98.  
  99. else if (a == 4) {
  100.  
  101. // Esto es para terminar todo el programa, no para salir del while
  102. // System.exit(0);
  103.  
  104. /**
  105. * Pregunta 1: como convertir un while a true o false usando JOptionPane confirm
  106. * dialog....
  107. *
  108. * Respuesta: Se puede hacer de muchas formas, vamos a hacerlo con 1 y 0.
  109. * Asumiendo que 1 es para SALIR y el 0 para NO SALIR y repetir el while
  110. */
  111.  
  112. int respuesta = Integer
  113. .parseInt(JOptionPane.showInputDialog(null, "Seguro que desea salir? (1 = SI, 0 = NO)"));
  114.  
  115. if (respuesta == 1) {
  116. // Para salir del while correctamente, tu variable "confirmacion" debe ser =
  117. // false
  118.  
  119. confirmacion = false;
  120. }
  121. }
  122.  
  123. }
  124. }
  125. }

He comentado todo en el código.

Espero haberte ayudado.
« Última modificación: 30 Mayo 2018, 07:03 am por RRGT19 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemas: array de objetos.[SOLUCIONADO]
Java
yovaninu 2 5,746 Último mensaje 22 Mayo 2008, 10:06 am
por k0n3
Problemas con array (unidimencional) de caracteres [C++]
Programación C/C++
.:BlackCoder:. 5 4,064 Último mensaje 20 Mayo 2010, 23:11 pm
por .:BlackCoder:.
problemas con array multidimencional
PHP
Zeroql 7 4,039 Último mensaje 1 Julio 2011, 00:03 am
por Zeroql
[Resuelto] Problemas con un Array
PHP
DeXon18 2 1,783 Último mensaje 3 Junio 2015, 20:22 pm
por DeXon18
MOVIDO: Problemas con los array
Programación General
Eleкtro 0 1,787 Último mensaje 27 Mayo 2018, 00:12 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines