|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2683
|
[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;
}
}
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);
}
}
Grazie Andrea |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Codice:
Coppie [] coppie = new Coppie[3] |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2683
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Codice:
coppie[0] = coppia1; coppie[1] = coppia2; coppie[2] = coppia3;
__________________
iMac 27" 5K |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Oppure direttamente così:
Codice:
coppia[0] = new Coppie(1,2); ecc.. |
|
|
|
|
|
#6 |
|
Senior Member
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 |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2683
|
Grazie...ora devo vedermi bene questo argomento...vi ringrazio per la disponibilità :-)
|
|
|
|
|
|
#8 |
|
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 } } |
|
|
|
|
|
#9 |
|
Senior Member
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;
}
}
}
|
|
|
|
|
|
#10 |
|
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* |
|
|
|
|
|
#11 |
|
Senior Member
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);
|
|
|
|
|
|
#12 |
|
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. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Se mi dici cosa non funziona vediamo di sistemare
|
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 6
|
Grazie grazie
|
|
|
|
|
|
#15 |
|
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.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:57.




















