Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Fenrir_01 en 26 Mayo 2018, 15:45 PM

Título: Problemas con los array
Publicado por: Fenrir_01 en 26 Mayo 2018, 15:45 PM
Hola gente quisiera saber si alguien puede darme un empujon con este codigo:

Código (java) [Seleccionar]
package buscar;
import javax.swing.JOptionPane;

public class Buscar {

   public static void main(String[] args) {
        boolean confirmacion = true;
      int i,j =0;
       
   String [] jr = new String[2];//creamos un arreglo para nombres
   
  int [] gr = new int [2];// creamos un arreglo para telefono
   
  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 p = JOptionPane.showInputDialog(" Ingrese el nombre del Operario ");
       JOptionPane.showMessageDialog(null,"Ingrese el telefono  de "+ p);  
       for (i=0; i<jr.length-1;i++){
     
       jr [i+1] =p;
       }
       
       for (j=0; j<gr.length-1; j++){
     
           int telefono = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el Numero de Telefono "));
             gr[i+1]= telefono;
       }
           
       }
      if (a== 2){
         
          String oper= JOptionPane.showInputDialog(null, "Ingrese el nombre del operario a Buscar");
         for(i =0; i<gr.length;i++){
          if (jr[i] == oper && jr[i]!= oper){
             
              JOptionPane.showMessageDialog(null,"El telefono del operario "+oper+" es: "+jr[i] );
           
          }
          else{
              JOptionPane.showMessageDialog(null, "Aca estoy");
          }
         }
           
      if (a==3){
        int  tel=Integer.parseInt( JOptionPane.showInputDialog(null, "Ingrese el telefono del operario a Buscar"));
       
        if (tel == gr[i]){
            JOptionPane.showMessageDialog(null,"El operario es "+gr[i]);
        }
      }
      if (a==4){
          System.exit(0);
      }
  //como convertir un while a true o false usando JOptionPane confirm dialog....
   //int  operacion = (JOptionPane.showConfirmDialog(null,"Desea cargar mas operarios y telefonos", "Confirmacion", JOptionPane.YES_NO_OPTION));
          // if (operacion == 0){
            //  confirmacion = true;
           //}else
              // if (operacion ==1 ){
                 //  System.exit(0);
           
   }
  }
   
   }
}


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.
Título: Re: Problemas con los array
Publicado por: Serapis 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...
Título: Re: Problemas con los array
Publicado por: RRGT19 en 30 Mayo 2018, 06:57 AM

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.