Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2014, 16:13
carlos_eduardo1
 
Fecha de Ingreso: noviembre-2013
Mensajes: 3
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta No permitir repetir datos en arreglo de java

Que tal, estoy haciendo este proyecto, pero ahora me piden no repetir datos al usuario en el arreglo, pensaba meter un if después de la validación del tamaño del arreglo validando espacio pero no sé como, mi otra idea era crear un método en la clase ArregloEnteros que validara repetición y en el main mandarlo a llamar pero me tiró error, alguna idea, dejó las dos clases que importan, las otras dos son del ordenamiento del arreglo y la de teclado que hace referencia para que el usuario introduzca el dato.

Espero me puedan guiar.

Código:
public class TestArreglo {
    
  public static int Menu() {
   int opcion;
   do{
      opcion = Teclado.entero("1.Insertar dato\n2.Listar\n3.Buscar Dato\n4.Actualizar dato\n5.Borrar dato\n6.Ordenar\n7.Salir\n");
      if (opcion <1 || opcion>7)
         System.out.println("Opcion no valida");
      }while(opcion <1 || opcion>7);
      return opcion;
   }
  public static void main(String []args){
   //variables
   int dato,max,opcion,pos;
   ArregloEnteros miarreglo;
   max=Teclado.entero("Dame el tamaño del arreglo:");;
   miarreglo = new ArregloEnteros(max);
   
   do{
   opcion=Menu();
   switch (opcion) {
          case 1:
              if (miarreglo.validaEspacio()) {
                 dato=Teclado.entero("Dame el dato:");
                 miarreglo.insertar(dato);
                if()//Aqui quería validar que no se repitiera el dato
                {
                    System.out.println("Error, no se pueden repetir datos");
              } }else {
                  System.out.println("Error no hay espacio");
              }
              break;
              
          case 2:
               miarreglo.listar();
              break;
              
          case 3:
             pos=miarreglo.buscarDato(Teclado.entero("Dato a buscar: "));
             if (pos != -1)
                for(int i=0;i<pos+1;i++){
                    miarreglo.listar(pos);
                }
             else 
                 System.out.println("Error, no existe el dato");
          break;
          case 4:
                dato=Teclado.entero("Dame el dato que quieres actualizar: ");
                pos=miarreglo.buscarDato(dato);
                if(pos != -1){
                   miarreglo.actualizar(pos);
                }
                else 
                   System.out.println("No se encontro el dato");
                break;               
           case 5:
               dato=Teclado.entero("Dato a borrar: ");
               pos= miarreglo.buscarDato(dato);
               if(pos != -1){
                  miarreglo.borrar(pos);
               }
               else 
                  System.out.println("No se encontro el dato");
               break; 
          case 6:
               miarreglo.Ordenar();
          break;
          
          case 7:
          break;
          
          default:
              System.out.println("Opcion incorrecta");
              break;
      }
    }while(opcion!=7);
   
  }
}
y la otra clase

Código:
 public class ArregloEnteros 
   {
    //atributos 
    private int[] arreglo;
    private int[] auxiliar;
    private int indice;
      
    //constructor
    public ArregloEnteros(int max){
        arreglo =new int[max];
        auxiliar =new int[max];
        indice = -1;
    }
    public boolean validaEspacio(){
    return(indice<arreglo.length-1);
    }
    public void insertar(int dato){
        indice ++;
        arreglo[indice]=dato;
    }
    public void listar(){
        int i;
        for(i=0;i<=indice;i++){
            System.out.println(arreglo[i]);       
        }
    }
    public void listar(int pos){
        System.out.println(arreglo[pos]);
      
    public int buscarDato(int dato){
      int j=0;
      for(int i=0;i<=indice;i++){
        if(arreglo[i]==dato){
           auxiliar[j]=i;
           j++;
        }
       }
      return j-1;
      }
      public void actualizar (int pos){
      for(int i=0;i<=pos;i++){
          arreglo[auxiliar[i]]=Teclado.entero("Introduzca el dato nuevo: ");
       }
      }
      public int borrar (int pos){
      for(int i=0;i<=pos;i++){
          arreglo[auxiliar[i]]=arreglo[indice];
          indice --;
       }
       return pos;
      }
      
      public void Ordenar(){
          Ordenamiento ordena=new Ordenamiento();
          ordena.SortIntercambio(arreglo, indice);     
    }
}
Gracias.