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
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]