- 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 (java) [Seleccionar]
import javax.swing.JOptionPane;
public class SO {
public static void main(String[] args) {
boolean confirmacion = true;
// int i, j = 0; Esto es innecesario
String[] nombres = new String[2];
int[] telefonos = new int[2];
while (confirmacion == true) {
int a = Integer.parseInt(JOptionPane.showInputDialog(
"\n______Agenda_____ \n" + "1 Cargar Operarios\n" + "2 Buscar Por Nombre\n"
+ "3 Buscar Por Telefono\n" + "4 Salir"));
if (a == 1) {
String nombreOperario = JOptionPane.showInputDialog(" Ingrese el nombre del Operario ");
// 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í:
int telefono = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono "));
// 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...
JOptionPane.showMessageDialog(null,
"El telefono del operario " + nombreOperario + " es: " + telefonos[i]);
}
}
}
else if (a == 3) {
int telefonoOperario = Integer
.parseInt(JOptionPane.showInputDialog(null, "Ingrese el telefono del operario a Buscar"));
// 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...
JOptionPane.showMessageDialog(null, "El operario es " + nombres[i]);
}
}
}
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
*/
int respuesta = Integer
.parseInt(JOptionPane.showInputDialog(null, "Seguro que desea salir? (1 = SI, 0 = NO)"));
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.