- 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
import javax.swing.JOptionPane; public class SO { boolean confirmacion = true; // int i, j = 0; Esto es innecesario int[] telefonos = new int[2]; while (confirmacion == true) { "\n______Agenda_____ \n" + "1 Cargar Operarios\n" + "2 Buscar Por Nombre\n" + "3 Buscar Por Telefono\n" + "4 Salir")); if (a == 1) { // Por qué tienes esto aquí si no hace nada? // JOptionPane.showMessageDialog(null, "Ingrese el telefono de " + // nombreOperario); // Por qué haces length-1 y luego [i+1]? No tiene sentido para mí, lo // arreglaré... // Lo guardaré en la primera posición del arreglo // Asumiremos que solo se podrá guardar 1 solo nombre por el momento, luego lo // arreglas nombres[0] = nombreOperario; // Por qué tienes la solicitud del número dentro del for?... // Se supone que es 1 solo número por operario, o no?... /* * for (j=0; j<gr.length-1; j++){ * * int telefono = * Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono " * )); gr[i+1]= telefono; } */ // Debería ser así: // Lo guardaré en la primera posición del arreglo // Asumiremos que solo se podrá guardar 1 solo telefono por el momento, luego lo // arreglas telefonos[0] = telefono; } else if (a == 2) { String nombreOperario = JOptionPane.showInputDialog(null, "Ingrese el nombre del operario a Buscar"); // Si estás buscando por el nombre, por qué estás usando "telefonos"? // Debería ser con "nombres" // for (i = 0; i < telefonos.length; i++) { for (int i = 0; i < nombres.length; i++) { // La segunda no tiene sentido, por qué usas esto? // if (nombres[i] == nombreOperario && nombres[i] != nombreOperario) { // Debería ser solamente esto... // Se usa .equals cuando se quiere comparar dos String's if (nombreOperario.equals(nombres[i])) { // Por qué muestras "nombres[i]" en lugar del telefono? // JOptionPane.showMessageDialog(null, "El telefono del operario " + // nombreOperario + " es: " + nombres[i]); // Debería ser... "El telefono del operario " + nombreOperario + " es: " + telefonos[i]); } } } else if (a == 3) { // Aquí te falta todo, vamos a hacerlo rápido... for (int i = 0; i < telefonos.length; i++) { if (telefonos[i] == telefonoOperario) { // Por qué muestras "telefonos[i]" en lugar de nombres? // Vamos a arreglarlo... } } } else if (a == 4) { // Esto es para terminar todo el programa, no para salir del while // System.exit(0); /** * Pregunta 1: como convertir un while a true o false usando JOptionPane confirm * dialog.... * * Respuesta: Se puede hacer de muchas formas, vamos a hacerlo con 1 y 0. * Asumiendo que 1 es para SALIR y el 0 para NO SALIR y repetir el while */ if (respuesta == 1) { // Para salir del while correctamente, tu variable "confirmacion" debe ser = // false confirmacion = false; } } } } }
He comentado todo en el código.
Espero haberte ayudado.