errore in compilazione

Pubblicità

daniele110696

Nuovo Utente
Messaggi
11
Reazioni
0
Punteggio
22
Salve, il seguente codice mi da in compilazione l'errore
SIG.java:82: error: cannot find symbol
int middle = (Integer)v[mid].getKey();
^
relativo al metodo binarySearch; qualcuno sa dirmi come mai? grazie

Codice:
import java.util.NoSuchElementException;

public class SIG implements Dictionary
{  //parte privata
   private Pair [] v;
   private int vSize;
   private final int INITSIZE = 10;
   public SIG()
   {
      v = new Pair[INITSIZE];
      makeEmpty();
   }
   
   public void makeEmpty()
   {
      vSize=0;
   }
   
   public boolean isEmpty()
   {
      return vSize == 0;
   }
   
   public int size()
   {
      return vSize;
   }
   
   public void insert(Comparable key, Object value)
   {
      try
      {
          remove(key);
      }
      catch(NoSuchElementException e)
      {}
      if(vSize == v.length) v = resize(2*v.length);
      int j = vSize-1;
      while(j>0 && (v[j].getKey()) > (Integer) key)
      {
          v[j+1] = v[j];
          j--;
      }
     
      v[j] = new Pair((Integer) key, (Double) value);
      vSize++;
   }
   
   public void remove(Comparable key)
   {
       int pos = binarySearch(v, 0, vSize-1, key);
        for(int i = vSize-1; i>pos; i--)
            v[i-1] = v[i];
        vSize--;
   }
   
   private Pair [] resize(int newlength)
   {
      if(newlength<=0) throw new IllegalArgumentException();
      Pair [] newv = new Pair[newlength];
      System.arraycopy(v, 0, newv, 0, vSize);
      return newv;
   }
   
    private int binarySearch(Object [] v, int from, int to, Comparable key)
    {
        if(from>to) throw new IllegalArgumentException();
        int mid = (from+to)/2;
        int middle = (Integer)v[mid].getKey();  //QUI
        if(((Integer) key) == middle) return mid;
        else if(((Integer) key) < middle)
            return binarySearch(v, 0, mid-1, key);
        else 
            return binarySearch(v, mid+1, vSize-1, key);
    }
   
    public Object find(Comparable key)
    {
        int k = binarySearch(v, 0, vSize-1, key);
        if(k>=0)
            return v[k].getNumber();
        else 
            throw new NoSuchElementException();
    }   //parte pubblica
   public Comparable[] toSortedKeyArray()
   {
      Comparable [] m = new Comparable[vSize];
      for(int i = 0; i<vSize; i++)
      {
          m[i] = v[i].getKey();
      }
      return m;
   }

    private class Pair
    {
        private Pair(int key, Double number)
        {
            numero = number;
            chiave = key;
        }
       
        public int getKey()
        {
            return chiave;
        }
       
        public Double getNumber()
        {
            return numero;
        }
       
        private int chiave;
        private double numero;
    }
}

[CODE]
 
Hai ragione, no non serve il cast devo proprio passargli un Pair nella firma e non un Object
Grazie


Inviato dal mio iPhone utilizzando Toms Hardware Italia Forum
 
Pubblicità
Pubblicità
Indietro
Top