Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con Método.

Estas en el tema de Problema con Método. en el foro de Java en Foros del Web. Hola. Tengo un problema con un método que estoy utilizando para revisar que al ingresar datos en un array, éstos no sean repetidos. Éste es ...
  #1 (permalink)  
Antiguo 19/10/2009, 13:07
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Problema con Método.

Hola.

Tengo un problema con un método que estoy utilizando para revisar que al ingresar datos en un array, éstos no sean repetidos.

Éste es el método:

Código Java:
Ver original
  1. public static boolean repiteA(String A[], String dato)
  2.         {
  3.              for(i=0;i<A.length;i++)
  4.              {
  5.                  if(dato.equals(A[i]))
  6.                      return true;
  7.              }
  8.              System.out.println("El dato que ingreso ya existe dentro del conjunto A");
  9.              return false;
  10.            
  11.     }

Y aquí es donde pido y voy insertando los valores en el array:
Código Java:
Ver original
  1. for(i=0; i<A.length;i++)
  2.         {
  3.             System.out.println("Inserte el valor del conjunto A en la posición "+(i+1));
  4.             dato = Leer.dato();
  5.                if(repiteA(A, dato))
  6.                A[i] = Leer.dato();
  7.         }
  8.         for(i=0;i<B.length;i++)
  9.         {
  10.             System.out.println("Inserte el valor del conjunto B en la posición "+(i+1));
  11.  
  12.                B[i] = Leer.dato();
  13.         }

Y cuando ejecuto el programa me sale así:
Código Java:
Ver original
  1. Inserte el valor del conjunto A en la posici&#243;n 1
  2. 5
  3. El dato que ingreso ya existe dentro del conjunto A

Como pueden ver es el primer dato que ingreso, entonces es completamente imposible que esté repetido, y automaticamente se brinca el paso de ingresar valores en el array A y se pasa al B, no sé por qué, espero puedan ayudarme.

De antemano, muchas gracias.

Saludos.

Última edición por Gaug; 19/10/2009 a las 13:14
  #2 (permalink)  
Antiguo 19/10/2009, 14:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con Método.

creo que tu metodo de repiteA esta mal escrito.

Vaya asi es como creo deberia de estar:

Código:

   1.
      public static boolean repiteA(String A[], String dato)
   2.
              {
   3.
                   for(i=0;i<A.length;i++)
   4.
                   {
   5.
                       if(dato.equals(A[i]))

                           System.out.println("El dato que ingreso ya existe dentro del conjunto A");
   6.
                           return true;
   7.
                   }
   8.
                   
   9.
                   return false;
  10.
                 
  11.
          }
esa es una pequenia modificacion al metodo, porque te imprimia el mensaje en pantalla cuando la condicion era falsa y lo que imagino que quieres es que lo imprima cuando sea verdadera.

ahora el otro pedazo de codigo:


Código:
   1.
      for(i=0; i<A.length;i++)
   2.
              {
   3.
                  System.out.println("Inserte el valor del conjunto A en la posición "+(i+1));
   4.
                  dato = Leer.dato();
   5.
                     if(repiteA(A, dato))

                     break;

                     else
   6.
                     A[i] = Leer.dato();
   7.
              }
   8.
              for(i=0;i<B.length;i++)
   9.
              {
  10.
                  System.out.println("Inserte el valor del conjunto B en la posición "+(i+1));
  11.
       
  12.
                     B[i] = Leer.dato();
  13.
              }

Ahi el if(repiteA(A, dato)) te regresaba falso, y por lo tento no ingresaba el valor al array.

Checa con estas modificaciones, creo que asi deberia de funcionarte.


Saludos...
  #3 (permalink)  
Antiguo 19/10/2009, 21:18
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con Método.

No me funciona, se sigue brincando al ciclo del conjunto 'B'

¿Alguna otra idea?

Gracias de antemano, saludos.
  #4 (permalink)  
Antiguo 19/10/2009, 22:16
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años, 7 meses
Puntos: 7
De acuerdo Respuesta: Problema con Método.

Hola, creo que esto es lo que quieres, es tu mismo código con ciertas modificaciones:

Código java:
Ver original
  1. public class Conjunto
  2. {
  3.     public static boolean repite(String C[],String dato)
  4.     {
  5.         boolean bandera=false;
  6.        
  7.         for(int i=0;i<C.length;i++)
  8.         {
  9.             if(dato.equals(C[i]))
  10.             {
  11.                 bandera=true;
  12.                 i=C.length;
  13.             }
  14.         }
  15.         return bandera;
  16.     }
  17.    
  18.     public static void main(String[] args)
  19.     {
  20.         String[] A=new String[10];
  21.         String[] B=new String[10];
  22.         String dato;
  23.        
  24.         for(int i=0;i<A.length;i++)
  25.         {
  26.             System.out.println("Inserte el valor del conjunto A en la posición [ " + (i+1) + "] :");
  27.             dato= Leer.dato();
  28.            
  29.             if(!repite(A,dato))
  30.                 A[i]=dato;
  31.             else
  32.             {
  33.                 System.out.println("EL DATO INGRESADO YA EXISTE");
  34.                 i--;
  35.             }
  36.         }
  37.        
  38.         for(int i=0;i<B.length;i++)
  39.         {
  40.             System.out.println("Inserte el valor del conjunto B en la posición [ " + (i+1) + "] :");
  41.             dato= Leer.dato();
  42.            
  43.             if(!repite(B,dato))
  44.                 B[i]=dato;
  45.             else
  46.             {
  47.                 System.out.println("EL DATO INGRESADO YA EXISTE");
  48.                 i--;
  49.             }
  50.         }
  51.     }
  52. }

No sé si lo mismo querías para el B pero igual puedes modificarlo. Espero te sea de ayuda.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #5 (permalink)  
Antiguo 20/10/2009, 03:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con Método.

El arreglo de B si tiene valores introducidos antes de entrar al ciclo, imagino que si, pero por si las dudas por eso te pregunto
  #6 (permalink)  
Antiguo 20/10/2009, 13:41
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Problema con Método.

Muchas gracias ya pude resolverlo.

Ahora tengo otro problema, tengo un código imprime operaciones con los conjuntos, más específicamente éste:

Código Java:
Ver original
  1. System.out.print("C A  !C B = {");
  2.         for(int i=0;i<B.length;i++)
  3.         {
  4.             System.out.print(B[i]+", ");
  5.         }
  6.         for(int j=0;j<U.length;j++)
  7.         {
  8.            for(int i=0;i<A.length;i++)
  9.            {
  10.                if(!U[j].equals(A[i]))
  11.                   System.out.print(U[i]+", ");
  12.            }
  13.         }
  14.         System.out.println("}");

Dice "CA y !CB" lo que significa complemento de A y no complemento de B, lo que quiere decir esto, es que ponga todos los elementos que no se encuentran en A, que serían los conjuntos B y U, PERO que ninguno de sus valores coincida con los que se encuentran en A.

Éste es el código con el que yo quiero realizar esto, pero no funciona correctamente, le faltaría que los elementos de B no se repitieran con los de A, y bueno tengo un problema ahí con los de U, no tengo idea de que podría hacer para imprimirlos.

Espero puedan hecharme una mano, muchas gracias de antemano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.