Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-01-2009, 19:17   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
[Java] Creare array di oggetti non primitivi...come?

ciao,
allora stò cercando di capire come poter creare array di oggetti non primitivi in Java...non ho problemi a creare un array di int ma se per esempio mi definissi un mio tipo di dato chiamato Coppie che semplicemente mi rappresenta oggetti formati da una coppia di interi (più qualche banale operazione su di essi...lo sò no è carino...dovrei fare una classe che rappresenta il tipo di dato e basta ed un'altra che mi rappresenta una lista di metodi utili ma questo è solo un esempio...)

Ora la mia classe Coppie è:

Codice:
/** Classe che rappresenta Coppie di interi */

public class Coppie{
	
	private int val1;
	private int val2;
	private int a;
	
	/** Costruttore: crea un nuovo oggetto Coppie e lo inizializza con i valori dei parametri a e b ricevuti 
		@param a valore 1
		@param b valore 2
	*/
	
	public Coppie(int a, int b){
		val1 = a;
		val2 = b;
	}
	
	public int getVal1(){
		return val1;
	}
	
	public int getVal2(){
		return val2;
	}
	
	
	public void scambia(){
		a = val1;
		val1 = val2;
		val2 = a;
	}
	
	public void somma(Coppie c){
		val1 += c.val1;
		val2 += c.val2;
	}
}
Quello che fà credo sia abbastanza intuitivo...

Poi creo un'altra classe che contiene il main dove vorrei poter creare un array di oggetti coppie (quindi credo che in ogni elemento dell'array ci debba essere il riferimento ad un oggetto di tipo Coppie presente nello heap)...io ho provato così ma non funziona:

Codice:
public class TestArrayCoppie{
	public static void main(String[] args){
		
		int a,b;
		
		Coppie coppia1 = new Coppie(1,2);
		Coppie coppia2 = new Coppie(7,8);
		Coppie coppia3 = new Coppie(1,1);
		
		Coppie [] = new Coppie[3];		// Creo un array di coppie
		
		
		a = coppia1.getVal1();
		b = coppia1.getVal2();
		
		System.out.print("Val1: " + a + " Val2: " + b);
		
	}
}
che c'è di sbagliato? Come posso creare un array di oggetti Coppie?

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 19:48   #2
Ken1986
Member
 
Iscritto dal: Nov 2007
Messaggi: 122
Codice:
Coppie [] coppie = new Coppie[3]
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 20:38   #3
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da Ken1986 Guarda i messaggi
Codice:
Coppie [] coppie = new Coppie[3]
Doh mi ero dimenticato di inserire il nome dell'array...ed adesso se voglio inizializzare l'array con i 3 oggetti di tipo Coppie che ho precedentemente creato?come fare?

Tnx
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 21:01   #4
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Codice:
coppie[0] = coppia1;
coppie[1] = coppia2;
coppie[2] = coppia3;
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 22:37   #5
Ken1986
Member
 
Iscritto dal: Nov 2007
Messaggi: 122
Oppure direttamente così:

Codice:
coppia[0] = new Coppie(1,2);
ecc..
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 23:15   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
O anche così:
Codice:
Coppie[] coppie = {new Coppie(1,2), new Coppie(7,8), new Coppie(1,1)};
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 00:06   #7
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Grazie...ora devo vedermi bene questo argomento...vi ringrazio per la disponibilità :-)
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2011, 16:58   #8
narutouzumaki
Junior Member
 
Iscritto dal: Mar 2011
Messaggi: 6
Array di oggetti,HELP ME

Dunque vi chiedo,anzi imploro il vostro aiuto
Ho scritto una classe ContoCor
class ContoCor{
private String nome;
private int conto;
private double ammontare;

//COSTRUTTORE
public ContoCor(String n,int c,double a){
this.nome = n;
this.conto = c;
this.ammontare = a;
}

//METODO
public String toString(){
String s = "Descrizione conto " + "\n";
s += "Nome intestatario conto " + this.nome + "\n";
s += "Numero conto " + this.conto + "\n";
s += "Ammontare conto " + this.ammontare + "\n";
return s;
}
//METODO
public void contiCritici(ContoCor[] v , double x){
for(int i=0;i<v.length;i++)
if(v[i].ammontare < x)
System.out.println(v[i]);
}
}


Ora devo scrivere la classe prova/test che mi chiede di inserire un array di inserire all’utente una sequenza a sua
scelta di conti correnti ed un double x, e che visualizza tutte le descrizioni complete dei
conti correnti inseriti che hanno un ammontare corrente inferiore ad x.
Io per ora ho scritto questa parte della classe prova/test ma non riesco a creare l'array di contoCor e quindi far girare il programma

class ProvaContoCor{
public static void main(String [] args){
InputWindow in = new InputWindow();
OutputWindow out = new OutputWindow("Conto Corrente");

int dim = in.readInt("Dimensione sequenza");
String [] nome = new String [dim];
int [] conto = new int [dim];
double [] ammontare = new double[dim];
double x = in.readDouble("Inserisci un valore");
ContoCor [] array = new ContoCor[dim];

for(int i=0;i<dim;i++){
nome[i] = in.readString("Inserisci il nome " + i);
conto [i] =in.readInt("Inserisci numero conto " + i);
ammontare [i] = in.readDouble("Inserisci ammontare del conto " + i);

ContoCor v = new ContoCor(nome[i],conto[i],ammontare[i]);
}


VI PREGO AIUTATEMI,è UNA COSA FACILE LO SO MA NON RIESCO STO IMPAZZENDO

}
}
narutouzumaki è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2011, 17:15   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Codice:
class ProvaContoCor{
public static void main(String [] args){
InputWindow in = new InputWindow();
OutputWindow out = new OutputWindow("Conto Corrente");

int dim = in.readInt("Dimensione sequenza");
String [] nome = new String [dim];
int [] conto = new int [dim];
double [] ammontare = new double[dim];
double x = in.readDouble("Inserisci un valore");
ContoCor [] array = new ContoCor[dim];

for(int i=0;i<dim;i++){
nome[i] = in.readString("Inserisci il nome " + i);
conto [i] =in.readInt("Inserisci numero conto " + i);
ammontare [i] = in.readDouble("Inserisci ammontare del conto " + i);

ContoCor v = new ContoCor(nome[i],conto[i],ammontare[i]);
array[i] = v;
}

}
}
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2011, 18:14   #10
narutouzumaki
Junior Member
 
Iscritto dal: Mar 2011
Messaggi: 6
Cavolo Grazie veramente NDAKOTA sei stato velocissimo ed efficientissimo,un ultima cosa poi veramente non ti rompo più.
se voglio visualizzare tutti i contoCor che hanno un ammontare minore di "x" come faccio?
lo so sono un rompi*
narutouzumaki è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2011, 21:39   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Puoi usare il tuo metodo contiCritici passando l'array e un certo valore x però quel metodo non è il massimo. Per come l'hai fatto avrebbe dovuto essere static, ti dice niente?

In ogni caso prova così

Codice:
for(int i=0;i<dim;i++) {
   nome[i] = in.readString("Inserisci il nome " + i);
   conto [i] =in.readInt("Inserisci numero conto " + i);
   ammontare [i] = in.readDouble("Inserisci ammontare del conto " + i);

   ContoCor v = new ContoCor(nome[i],conto[i],ammontare[i]);
   array[i] = v;
}

ContoCor.contiCritici(array, x);
Dove x è una variabile valorizzata come preferisci. Ciao
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 16-03-2011, 10:28   #12
narutouzumaki
Junior Member
 
Iscritto dal: Mar 2011
Messaggi: 6
Ndakota hai ragionissimo,anche io avrei usato il metodo static,mah lo scheletro della classe è definito dal mio professore,questi sono delle prove di esame alla programmazione.
Anche io per pura semplicità avrei usato un metodo static in modo tale da rendere le cose più semplice.
Proprio per questo ho chiesto il vostro aiuto per la visualizzazione,perchè purtroppo mettendo

ContoCor.contiCritici(array, x) non funziona

Ad ogni modo grazie per l'array di oggetti di tipo non primitivo,sei un cavolo di geniaccio.
narutouzumaki è offline   Rispondi citando il messaggio o parte di esso
Old 16-03-2011, 21:49   #13
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Se mi dici cosa non funziona vediamo di sistemare
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2011, 14:18   #14
narutouzumaki
Junior Member
 
Iscritto dal: Mar 2011
Messaggi: 6
Grazie grazie
narutouzumaki è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2011, 14:24   #15
narutouzumaki
Junior Member
 
Iscritto dal: Mar 2011
Messaggi: 6
Dunque dovrei visualizzare i conti critici,solo che con ContoCor.ContiCritici(array,x) non mi visualizza nulla purtroppo.
narutouzumaki è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
NVIDIA RTX PRO 4500 Server Edition: la s...
Core Ultra 200 HX Plus: Intel mette il t...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Jensen Huang propone i token come nuovo ...
Realme 16 Pro e 16 Pro+ tra i più...
Dall'enciclopedia all'algoritmo: Encyclo...
Il CEO di Epic Games Tim Sweeney ha comp...
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: 00:52.


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