sisafra
09-09-2010, 19:13
Ciao, visto che l'ultima volta mi avete aiutato e tirato fuori dall'impaccio ci riprovo, se potessi farei a meno di disturbarvi, ma non ho nessuno a cui posso chiedere aiuto se non qui..
Ho creato questo programma e l'ultima riga di codice dovrebbe stamparmi la stringa "minnie topolino", invece a me stampa "null null", ma non riesco a capire dove è l'errore..
Se potete aiutarmi..
Grazie..:)
interface Container
{ int size();
boolean isEmpty();
}
interface Queue extends Container
{ Object front();
Object dequeue();
void enqueue (Object x);
}
class EmptyQueueException extends RuntimeException{}
interface Map extends Container
{ Object put(Object key, Object value);
Object remove(Object key);
Object get(Object key);
Object[] keys();
}
class MyQueue implements Queue
{ private Object[] v;
private int vsize;
private int front; // per avere prestazioni O(1)
private int back; // per avere prestazioni O(1)
public MyQueue()
{ v = new Object[1];
vsize = 0;
front = back = 0;
}
public int size()
{ return vsize;
}
public boolean isEmpty()
{ return front == back;
}
public Object front()
{ if ( isEmpty())
throw new IllegalArgumentException();
return v[front];
}
public Object dequeue()
{ if ( isEmpty())
throw new IllegalArgumentException();
Object obj = v[back];
vsize = vsize-1;
return obj;
}
public void enqueue(Object obj)
{
class MyMap implements Map
{ private Queue q;
private class Entry
{ public Object key;
public Object value;
}
public MyMap()
{ q = new MyQueue();
}
public int size()
{ return q.size(); }
public boolean isEmpty()
{ return q.isEmpty(); }
public Object put(Object key, Object value)
{ for (int i = 0; i<size(); i++)
{ Entry x = (Entry) q.dequeue();
if ( (x.key).equals(key))
{ Object oldx = x.value;
x.value = value;
q.enqueue(x);
return oldx;
}
q.enqueue(x);
}
Entry w = new Entry();
w.value = value;
w.key = key;
return null;
}
public Object remove (Object key)
{ for (int i = 0; i<size(); i++)
{ Entry r = (Entry)q.dequeue();
if ( (r.key).equals(key))
return r.value;
}
return null;
}
public Object get(Object key)
{ for ( int i =0; i<size(); i++)
{ Entry r = (Entry)q.dequeue();
if ( (r.key).equals(key))
{ Object value = r.value;
q.enqueue(r);
return value;
}
q.enqueue(r);
}
return null;
}
public Object[] keys()
{ Object[] keys = new Object[size()];
for (int i = 0; i<size(); i++)
while (!q.isEmpty())
keys[i]=q.dequeue();
return keys;
}
}
public class Tema5
{ public static void main (String[] args)
{ Map map = new MyMap();
map.put("123", "pippo");
map.put("234", "pluto");
map.put("456", "paperino");
map.put("123", "topolino");
map.put("999", "minnie");
map.remove("456");
System.out.println(map.get("999")+ " " + map.get("123"));
}
}
Ho creato questo programma e l'ultima riga di codice dovrebbe stamparmi la stringa "minnie topolino", invece a me stampa "null null", ma non riesco a capire dove è l'errore..
Se potete aiutarmi..
Grazie..:)
interface Container
{ int size();
boolean isEmpty();
}
interface Queue extends Container
{ Object front();
Object dequeue();
void enqueue (Object x);
}
class EmptyQueueException extends RuntimeException{}
interface Map extends Container
{ Object put(Object key, Object value);
Object remove(Object key);
Object get(Object key);
Object[] keys();
}
class MyQueue implements Queue
{ private Object[] v;
private int vsize;
private int front; // per avere prestazioni O(1)
private int back; // per avere prestazioni O(1)
public MyQueue()
{ v = new Object[1];
vsize = 0;
front = back = 0;
}
public int size()
{ return vsize;
}
public boolean isEmpty()
{ return front == back;
}
public Object front()
{ if ( isEmpty())
throw new IllegalArgumentException();
return v[front];
}
public Object dequeue()
{ if ( isEmpty())
throw new IllegalArgumentException();
Object obj = v[back];
vsize = vsize-1;
return obj;
}
public void enqueue(Object obj)
{
class MyMap implements Map
{ private Queue q;
private class Entry
{ public Object key;
public Object value;
}
public MyMap()
{ q = new MyQueue();
}
public int size()
{ return q.size(); }
public boolean isEmpty()
{ return q.isEmpty(); }
public Object put(Object key, Object value)
{ for (int i = 0; i<size(); i++)
{ Entry x = (Entry) q.dequeue();
if ( (x.key).equals(key))
{ Object oldx = x.value;
x.value = value;
q.enqueue(x);
return oldx;
}
q.enqueue(x);
}
Entry w = new Entry();
w.value = value;
w.key = key;
return null;
}
public Object remove (Object key)
{ for (int i = 0; i<size(); i++)
{ Entry r = (Entry)q.dequeue();
if ( (r.key).equals(key))
return r.value;
}
return null;
}
public Object get(Object key)
{ for ( int i =0; i<size(); i++)
{ Entry r = (Entry)q.dequeue();
if ( (r.key).equals(key))
{ Object value = r.value;
q.enqueue(r);
return value;
}
q.enqueue(r);
}
return null;
}
public Object[] keys()
{ Object[] keys = new Object[size()];
for (int i = 0; i<size(); i++)
while (!q.isEmpty())
keys[i]=q.dequeue();
return keys;
}
}
public class Tema5
{ public static void main (String[] args)
{ Map map = new MyMap();
map.put("123", "pippo");
map.put("234", "pluto");
map.put("456", "paperino");
map.put("123", "topolino");
map.put("999", "minnie");
map.remove("456");
System.out.println(map.get("999")+ " " + map.get("123"));
}
}