Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-11-2007, 18: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, 19: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, 19: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, 10: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 10:29.
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2007, 12: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, 13: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, 18: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, 19: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


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Resident Evil Code: Veronica, il Remake ...
Allenatore esonerato a causa di ChatGPT?...
Il mercato degli SSD è in salita:...
Offerte Dell su Amazon: 4 portatili pote...
Richard Stallman spara a zero su intelli...
C'è anche un Ripetitore Wi-Fi sot...
Biostampa 3D: scienziati creano tessuto ...
Adesso puoi comprare gli occhiali smart ...
Changan CS75 Plus entra nel Guinness: sa...
Prime foto della McLaren MCL40: bellissi...
Una manna per gli allergici: torna a 79€...
Blink a prezzo minimo storico: Mini 2K+ ...
Un professore tedesco perde due anni di ...
Perché Microsoft rilascia gli aggiorname...
Leapmotor, arrivano C10 Long Range e AWD...
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: 12:08.


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