Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-11-2007, 17:30   #1
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
[Java] iteratore e oggetti, problema

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:

Codice:
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
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:13   #2
alecava
Junior Member
 
Iscritto dal: Nov 2004
Città: Luino
Messaggi: 20
se dichiari una variabile fuori dal ciclo di tipo pezzo con nome tmp e poi la usi nel ciclo così...

while(it.hasNext() && flag == true) {
tmp = (pezzo)it.next;
if(tmp.numero == 2) {
t.append("Elemento 2 trovato\n");
flag = false;
}
}

...quando il ciclo trova quello che vuoi nella variabile tmp hai il riferimento all'oggetto che cercavi e ci fai tutto quello che vuoi....

PS se dichiari ArrayList usando il meccanismo dei generics, cioè ArrayList<pezzo> , puoi evitare i cast che rendono il codice meno elegante
alecava è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2007, 18:18   #3
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
!

ora si, tutto ha mooolto senso. Grazie.
non sapevo di poter fare tmp = (pezzo)it.next;
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 09:22   #4
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
Nel modo che mi hai suggerito mi dice che non sa cosa sia "numero" in questa riga:

if(tmp.numero == 2)

come posso aggiustare?
Ho definito un Object tmp e ho fatto

tmp = (pezzo)it.next();

ma poi cade nell'if.
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre

Ultima modifica di D3stroyer : 01-12-2007 alle 09:29.
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 11:31   #5
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
dichiara tmp come pezzo e non come Object
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 12:06   #6
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
ok, non è molto pratico, forse c'è un modo piu' intelligente. Per ora grazie a voi ho risolto così.

Codice:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import com.bruceeckel.swing.*;
import com.bruceeckel.util.*;

class pezzo {
	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);
     	    
     	    pezzo tmp = new pezzo();
     	    
     	    public TextArea() {
     	    	
				Iterator it = lista.iterator();
				
				
				while(it.hasNext() && flag == true) {
				tmp = (pezzo)it.next();
				if(tmp.numero == 2) {
				t.append("Elemento 2 trovato\n");
				flag = false;
				}
				}		
		  		Input = tmp.numero;
		  		temp = Integer.toString(Input);
		  		t.append(temp);
		  	
     	    	Container cp = getContentPane();
   				cp.setLayout(new FlowLayout());
   				cp.add(new JScrollPane(t));	
			}
		}
	Console.run(new TextArea(), 475, 425);
	}
}
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 17:55   #7
alecava
Junior Member
 
Iscritto dal: Nov 2004
Città: Luino
Messaggi: 20
comunque non c'è bisogno di scrivere "pezzo tmp = new pezzo();" basta "pezzo tmp;" tanto dopo definisci tmp nel ciclo...Prima ti dava quell'errore perchè se dichiari un riferimento di tipo Object è ovvio che non avrà i metodi che hai definito tu anche se poi effettivamente quel riferimento punta a un oggetto di tipo pezzo, ma questo al compilatore non interessa, se vede il tipo Object ti fa usare solo i metodi di Object
alecava è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 18:18   #8
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Un consiglio: usa nuovo for e generici, visto che stai imparando un
linguaggio è bene non partire da vecchie versioni
lovaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Steam ha appena chiuso un semestre molto...
I nuovi iPhone 18 Pro potrebbero essere ...
Huawei realizzerà chip di nuova g...
La JAXA ha eseguito un test del prototip...
Netflix, ritorna la prova gratuita per i...
Il satellite LINK per salvare il telesco...
Il nuovo iPhone 18 Pro Max costerà...
Il tredicesimo volo del razzo spaziale S...
Pagare il parcheggio è sempre pi&...
Torvalds: 'Non sono più un progra...
Xiaomi lavora alla nuova Smart Band 11, ...
Inabissato in Grecia, iPhone 16 Pro sopr...
Volkswagen Zukunftsplan 2030: il nuovo p...
'Non ci interessano i segreti di Apple':...
Genitori troppo connessi: uno studio riv...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v