Helldron
18-04-2009, 09:59
Ciao a tutti..Ho un problema abbastanza fastidioso :confused: , magari è banale però non so se si tratta di codice o di importare qualche libreria per questa mia classe che usa Iterator. Quando compilo il main() il compilatore mi tira fuori:
C:\Enrico\università\esercizi java>javac LCITest.java
.\LCI.java:16: cannot find symbol
symbol : class Iterator
location: class LCI
public Iterator enumera(){
^
.\LCI.java:21: cannot find symbol
symbol : class Iterator
location: class LCI
private class LCIIterator implements Iterator{
^
LCITest.java:14: cannot find symbol
symbol : class Iterator
location: class LCITest
Iterator it = lista.enumera();
^
3 errors
La classe LCI è questa:
public class LCI{
/**OVERVIEW: la classe creao oggetti ListaConcatenataDiInteri che sanno aggiungere oggetti NodoInt in testa e che hanno un iteratore per gestirli*/
private NodoInt testa;
public LCI(){
testa = null;
}
public void addInTesta(NodoInt x){
x.setSuccessivo(testa);
testa = x;
}
public Iterator enumera(){
/**REQUIRES: non modificare la lista quando l'Iteratore è in uso*/
return new LCIIterator();
}//il metodo generatore
private class LCIIterator implements Iterator{
private NodoInt dove;
public LCIIterator(){
dove = testa;
}
public boolean hasNext(){
return dove != null;
}
public Object next(){
return new Integer(dove.getValore()); //wrapping del tipo che restituisce getValore(cioè un int) in uno di tipo non primitivo(Integer)
}
public void remove(){
dove = dove.getSuccessivo();
}
}
}
la classe NodoInt serve solo per creare un oggetto nodo:
public class NodoInt{
/**OVERVIEW: classe che crea oggetti di tipo NodoInt con 1 valore intero e puntatore al successivo elemento di una lista
fA: <intero,riferimento nodo successivo> -> <val,succ>
IR: val != int && succ != NodoInt*/
private int val;
private NodoInt succ;
public NodoInt(int n){
val = n;
succ = null;
}
public int getValore(){
/** @return: this.val*/
return val;
}
public NodoInt getSuccessivo(){
/**MODIFIES: restituisce il riferimento a this (effetto collaterale)*/
return succ;
}
public void setSuccessivo(NodoInt x){
/**EFFECTS: modifica il valore di this (variabile succ) che diventa il riferimento a x
MODIFIES: modifica il valore di this (variabile succ) che diventa il riferimento a x (effetto collaterale)
@param: NodoInt*/
succ = x;
}
}
La classe del main è questa:
public class LCITest{
public static void main(String[] args){
LCI lista = new LCI();
NodoInt a = new NodoInt(12);
NodoInt b = new NodoInt(20);
NodoInt c = new NodoInt(-30);
a.setSuccessivo(b);
b.setSuccessivo(c);
lista.addInTesta(a);
Iterator it = lista.enumera();
int i = 0;
while(it.hasNext()){
int k = ((Integer)it.next().intValue()); //wrapping da Integer a int per recuperare il valore dell-elemento i-esimo della lista
System.out.println("valore "+i+" della lista: "+k+"\n");
it.remove();
i++;
}
}
}
Grazie!!!
C:\Enrico\università\esercizi java>javac LCITest.java
.\LCI.java:16: cannot find symbol
symbol : class Iterator
location: class LCI
public Iterator enumera(){
^
.\LCI.java:21: cannot find symbol
symbol : class Iterator
location: class LCI
private class LCIIterator implements Iterator{
^
LCITest.java:14: cannot find symbol
symbol : class Iterator
location: class LCITest
Iterator it = lista.enumera();
^
3 errors
La classe LCI è questa:
public class LCI{
/**OVERVIEW: la classe creao oggetti ListaConcatenataDiInteri che sanno aggiungere oggetti NodoInt in testa e che hanno un iteratore per gestirli*/
private NodoInt testa;
public LCI(){
testa = null;
}
public void addInTesta(NodoInt x){
x.setSuccessivo(testa);
testa = x;
}
public Iterator enumera(){
/**REQUIRES: non modificare la lista quando l'Iteratore è in uso*/
return new LCIIterator();
}//il metodo generatore
private class LCIIterator implements Iterator{
private NodoInt dove;
public LCIIterator(){
dove = testa;
}
public boolean hasNext(){
return dove != null;
}
public Object next(){
return new Integer(dove.getValore()); //wrapping del tipo che restituisce getValore(cioè un int) in uno di tipo non primitivo(Integer)
}
public void remove(){
dove = dove.getSuccessivo();
}
}
}
la classe NodoInt serve solo per creare un oggetto nodo:
public class NodoInt{
/**OVERVIEW: classe che crea oggetti di tipo NodoInt con 1 valore intero e puntatore al successivo elemento di una lista
fA: <intero,riferimento nodo successivo> -> <val,succ>
IR: val != int && succ != NodoInt*/
private int val;
private NodoInt succ;
public NodoInt(int n){
val = n;
succ = null;
}
public int getValore(){
/** @return: this.val*/
return val;
}
public NodoInt getSuccessivo(){
/**MODIFIES: restituisce il riferimento a this (effetto collaterale)*/
return succ;
}
public void setSuccessivo(NodoInt x){
/**EFFECTS: modifica il valore di this (variabile succ) che diventa il riferimento a x
MODIFIES: modifica il valore di this (variabile succ) che diventa il riferimento a x (effetto collaterale)
@param: NodoInt*/
succ = x;
}
}
La classe del main è questa:
public class LCITest{
public static void main(String[] args){
LCI lista = new LCI();
NodoInt a = new NodoInt(12);
NodoInt b = new NodoInt(20);
NodoInt c = new NodoInt(-30);
a.setSuccessivo(b);
b.setSuccessivo(c);
lista.addInTesta(a);
Iterator it = lista.enumera();
int i = 0;
while(it.hasNext()){
int k = ((Integer)it.next().intValue()); //wrapping da Integer a int per recuperare il valore dell-elemento i-esimo della lista
System.out.println("valore "+i+" della lista: "+k+"\n");
it.remove();
i++;
}
}
}
Grazie!!!