D3stroyer
30-11-2007, 17:30
Mi sto confondendo le idee e non trovo niente nemmeno googlando o rileggendo il libro di eckel (probabilmente ho capito male dei passi).
Io sono in questa situazione:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import com.bruceeckel.swing.*;
import com.bruceeckel.util.*;
class pezzo {
pezzo(int a) { numero = a; }
int numero;
}
class numerone {
static int numerostatic;
static void funzione() { numerostatic +=1; }
}
class iteratore {
public static void main(String[] args) {
final ArrayList lista = new ArrayList();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
class TextArea extends JApplet {
String temp;
boolean flag = true;
int Input;
private JTextArea t = new JTextArea(20, 40);
public TextArea() {
Iterator it = lista.iterator();
while(it.hasNext() && flag == true) {
if((((pezzo)it.next()).numero) == 2) {
t.append("Elemento 2 trovato\n");
flag = false;
}
} // da qui sono uscito dal while e l'iteratore è sull'oggetto con numero = 2
Input = (((pezzo)it.next()).numero); //il problema è qui, io non voglio it.next() ma accedere direttamente all'oggetto
temp = Integer.toString(Input);
t.append(temp); //qui temp è uguale a 3, io voglio che sia uguale a 2, cioè che lo prenda dall'oggetto 2 e non dal 3!
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JScrollPane(t));
}
}
Console.run(new TextArea(), 475, 425);
}
}
Il punto è questo: come posso accedere completamente ad un oggetto dopo aver fatto un ciclo per trovarlo? In questo caso trova l'elemento con numero = 2, ma poi non so come accedervi per eventualmente modificare tutti i dati dell'oggetto (lasciamo stare funzioni, voglio solo poter entrare nell'oggetto come facevo con c++ se possibile) dato che posso solo chiamare next() per spostare l'iteratore. In sostanza mi chiedevo come ovviare alla mancanza di un "it.current()". Sicuramente è facile per voi, illuminatemi :(
Io sono in questa situazione:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import com.bruceeckel.swing.*;
import com.bruceeckel.util.*;
class pezzo {
pezzo(int a) { numero = a; }
int numero;
}
class numerone {
static int numerostatic;
static void funzione() { numerostatic +=1; }
}
class iteratore {
public static void main(String[] args) {
final ArrayList lista = new ArrayList();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
numerone.funzione();
lista.add(new pezzo(numerone.numerostatic));
class TextArea extends JApplet {
String temp;
boolean flag = true;
int Input;
private JTextArea t = new JTextArea(20, 40);
public TextArea() {
Iterator it = lista.iterator();
while(it.hasNext() && flag == true) {
if((((pezzo)it.next()).numero) == 2) {
t.append("Elemento 2 trovato\n");
flag = false;
}
} // da qui sono uscito dal while e l'iteratore è sull'oggetto con numero = 2
Input = (((pezzo)it.next()).numero); //il problema è qui, io non voglio it.next() ma accedere direttamente all'oggetto
temp = Integer.toString(Input);
t.append(temp); //qui temp è uguale a 3, io voglio che sia uguale a 2, cioè che lo prenda dall'oggetto 2 e non dal 3!
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JScrollPane(t));
}
}
Console.run(new TextArea(), 475, 425);
}
}
Il punto è questo: come posso accedere completamente ad un oggetto dopo aver fatto un ciclo per trovarlo? In questo caso trova l'elemento con numero = 2, ma poi non so come accedervi per eventualmente modificare tutti i dati dell'oggetto (lasciamo stare funzioni, voglio solo poter entrare nell'oggetto come facevo con c++ se possibile) dato che posso solo chiamare next() per spostare l'iteratore. In sostanza mi chiedevo come ovviare alla mancanza di un "it.current()". Sicuramente è facile per voi, illuminatemi :(