|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
JAVA spostamento array
domanda ho due classi, nella classe a inizializzo un array bidimensionale come faccio nella classe b a prelevare l'array bidimensionale?
io pensavo di creare un metodo getArray nella classe A ma nn riesco a passarlo?? |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...il problema sembra semplice...potresti postare il tuo codice?...
...ciao... |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
Codice:
//Metodo che mi crea la matrice virtuale
public void creaMatrice(){
for(int y=0; y<matrice.length;y++){
for(int x=0; x<matrice.length;x++){
matrice[x][y] = 0;
}
}
}
//Metodo che mi passa la matrice
public void getMatrice(int[][] matrice){
matrice = int[][] matrice;
return ;
}
classe Cantiere Codice:
public void addnave(){
qui dovrei avere la matrice per fare dei controlli
}
|
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...dipende...se la classe Cantiere crea l'oggetto Matrice basterà creare in quest'ultima i metodi di get alla matrice...se sarà una nuova classe a creare Matrice e Cantire semplicemente Cantiere dovrà avere un metodo che accetti in ingresso Matrice...
...ciao... |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
la teoria lo capita il probblema e in pratica.. come faccio il metodo getmatrice cmq ti do tutta la classe Codice:
public class Disegno {
public int[][] matrice;
public Disegno() {
matrice = new int[10][10];
}
//Metodo che mi crea la matrice virtuale
public void creaMatrice(){
for(int y=0; y<matrice.length;y++){
for(int x=0; x<matrice.length;x++){
matrice[x][y] = 0;
}
}
}
//Metodo che mi stampa la matrice virtuale
public void stampaMatrice(){
for(int y=0; y<matrice.length;y++){
for(int x=0; x<matrice.length;x++){
System.out.print(matrice[x][y] + " ");
}
System.out.println("");
}
}
//Metodo che mi passa la matrice
public void getMatrice(int[][] matrice){
matrice = int[][] matrice;
return ;
}
}
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Sicuro?
1) Concetto di incapsulazione: le variabili di istanza dovrebbero avere un livello di accesso non pubblico (in genere private). 2) creaMatrice() non crea alcuna matrice ... la azzera soltanto. 3) getMatrice() poi è completamente fuori senso .... Così avrebbe senso: Codice:
public int[][] getMatrice () {
return matrice;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ti posto due righe che spero possano farti chiarezza...
...un normale contenitore...un po' di bean e un metodo per pescare e settare le singole stringhe di un bean array di stringhe... Codice:
public class Contenitore {
private int intero;
private String stringa;
private String[] stringhe;
/**
* @return Returns the intero.
*/
public int getIntero() {
return intero;
}
/**
* @param intero The intero to set.
*/
public void setIntero(int intero) {
this.intero = intero;
}
/**
* @return Returns the stringa.
*/
public String getStringa() {
return stringa;
}
/**
* @param stringa The stringa to set.
*/
public void setStringa(String stringa) {
this.stringa = stringa;
}
/**
* @return Returns the stringhe.
*/
public String[] getStringhe() {
return stringhe;
}
/**
* @param stringhe The stringhe to set.
*/
public void setStringhe(String[] stringhe) {
this.stringhe = stringhe;
}
/**
* @return Returns the stringhe.
*/
public String getStringa(int i) {
return stringhe[i];
}
/**
* @param stringhe The stringhe to set.
*/
public void setStringa(String stringa,int i) {
this.stringhe[i] = stringa;
}
}
Codice:
public class Controllore {
public boolean controlloContenitore(Contenitore contenitore){
boolean risultatoControllo = false;
for(int i=0;i<contenitore.getStringhe().length;i++)
if(contenitore.getStringa(i).indexOf("miao")>-1)
risultatoControllo = true;
return risultatoControllo;
}
public String[] modificaArray(String array[]){
for(int i=0;i<array.length;i++)
array[i] = "miao";
return array;
}
}
Codice:
public class Programma {
public Programma(){
Controllore controllore = new Controllore();
Contenitore contenitore = new Contenitore();
String stringhe[] = {"ciao","bau"};
contenitore.setStringhe(stringhe);
boolean risultato;
controllore.modificaArray(contenitore.getStringhe());
risultato = controllore.controlloContenitore(contenitore);
System.out.println(risultato);
}
public static void main(String[] args) {
new Programma();
}
}
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il metodo getMatrice che vuoi dovrebbe essere:
Codice:
//Metodo che mi passa la matrice
public int[][] getMatrice(){
return matrice;
}
int[][] m = dis.getMatrice(); il numero di righe della "matrice" m sarebbe: int numeroRighe = m[0].length; e il numero di colonne: int numeroColonne = m.length; ma è un po' arbitrario, specialmente per una matrice quadrata, soprattutto se fatta con gli array multidimensionali che in Java sono molto multi
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
Quote:
thx |
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
L'array di int restituito dal metodo getMatrice è l'array di nome "matrice" dichiarato nelle prime righe della classe disegno.
"Si sa" che è quello per via del modo in cui sono risolti i nomi nel linguaggio di programmazione Java. Il compilatore incontra questo metodo: public int[][] getMatrice() { return matrice; } e, esaminando il suo corpo, trova il nome "matrice". Scopre che non c'è la dichiarazione di una variabile locale di nome "matrice" nel corpo del metodo nè esiste una siffatta dichiarazione tra i parametri del metodo getMatrice (non ha parametri). A quel punto tenta di ricondurre il nome "matrice" ad una delle variabili dichiarate nell'ambito immediatamente contenete il corpo del metodo. Scopre che esiste la dichiarazione di una variabile di nome matrice, quel: public int[][] matrice; in testa alla classe Disegno. Il compilatore collega quindi il nome "matrice" trovato nel corpo del metodo alla variabile "matrice" dichiarata nel corpo della classe disegno. Il risultato è che il metodo getMatrice restituisce il valore del campo "matrice" delle istanze di Disegno. Era questo che volevi? Cioè volevi che il metodo getMatrice di Disegno restituisse l'array di int dichiarato nelle prime linee di quella classe?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
mm cavoli scusate se insisto ma c'è qualcosa che nn mi torna e faccio confusione:
se io ad.es. nella classe 1 o due variabili int, e con queste due variabili (x,y) devo agire su un array int[][] che risiede nella classe 2: -creo un metodo getarray in classe 2/ e un metodo set -nella classe uno chiedo un getArray(classe 2) e poi faccio un setArray(classe2) è corretto il ragionamento? |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Devi adottare un approccio più umano altrimenti il linguaggio Java non ti servirà bene quanto potrebbe.
Ciò premesso, per agire intendi dire che vuoi modificare uno dei valori immagazzinati nell'array di interi?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
Quote:
si, e che nn voglio avere dieci mila variaili uguali con doversi nomi da mettere in giro xche se nnn nn capisco piu nulla, volevo tenere la matrice in una classe e se ne avevo bisogno la cambiavo dove mi serviva |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Quote:
Codice:
public void setCellValue(int rowNumber, int colNumber, int value) {
matrice[rowNumber, colNumber] = value;
}
public int getCellValue(int rowNumber, int colNumber) {
return matrice[rowNumber, colNumber];
}
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Allora la questione è un pelo diversa. Più che un metodo di accesso (getMatrice) al campo (public int[][] matrice) di un'istanza (x = new Disegno()) forse cerchi un sistema per far sì che ogni tuo oggetto possa accedere ad una stessa "cosa" senza doversi potar dietro uno specifico riferimento a quella cosa.
Per fare un esempio è come essere in cinque in una stanza ed immagine che ognuno dei cinque voglia poter dire qualcosa ad uno degli altri senza doverlo cercare al telefono. Si tratta di una necessità tutt'altro che assurda. La soluzione a questo problema è ovvia quanto ovvio è il rilievo che ogni entità frutto di un'unica percezione condivide con le altre proprio l'unicità della percezione da cui derivano. Detto altrimenti, se osservo un fenomeno fatto di cinque persone in una stanza la prima banalità che posso dire è che quei cinque esistono tutti in uno stesso contesto, condividono lo stesso ambiente, sono il frutto di un'unica percezione. L'esistenza in un unico contesto è ciò che consente a quelle persone di interagire. Passando dalle chiacchiere ai fatti, la comune esistenza in un unico contesto può essere rapidamente espressa dalla definizione di una categoria di oggetti la cui caratteristica saliente sia la condivisione di un contesto. La maggior parte di queste definizioni sono ricorsive. Codice:
public interface Entity {
Entity getContext();
}
Codice:
public class Environment implements Entity {
public Entity getContext() {
return this;
}
}
Codice:
public class Disegno implements Entity {
private Environment context;
private int righe;
private int colonne;
private int[][] matrice = new int[righe][colonne];
public Disegno(Environment context) {
this.context = context;
}
public int[][] getMatrice() {
return matrice;
}
public Environment getContext() {
return context;
}
}
Codice:
public class Environment implements Entity {
private Disegno disegno = new Disegno(this);
public Disegno getDisegno() {
return disegno;
}
public Entity getContext() {
return this;
}
}
Chissenefrega, mi dirai. Se la tua intenzione era quella di avere un riferimento "globale" a Disegno e tramite disegno alla sua matrice (anche se credo che nel fenomeno che intendi rappresentare Disegno coincida con matrice) allora il gioco è fatto. Qualsiasi elemento esistente nello stesso contesto di disegno che esprima tale fatto tramite la condivisione dello stesso ambiente può accedere a Disegno tramite questa semplice comune esistenza. Codice:
public class Terzo implements Entity {
private Environment context;
public Terzo(Environment context) {
this.context = context;
}
public void eseguiOperazione() {
int[][] matrice = getContext().getDisegno().getMatrice();
}
public Environment getContext() {
return context;
}
}
Codice:
public class Environment implements Entity {
private Disegno disegno = new Disegno(this);
private Terzo terzo = new Terzo(this);
public Terzo getTerzo() {
return terzo;
}
public Disegno getDisegno() {
return disegno;
}
public Entity getContext() {
return this;
}
}
Ti ho perso per strada?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jun 2005
Città: CH
Messaggi: 1058
|
spiegazione eccellente, farò sapere
Thx che link condigliate per guide java in ita? |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Prova quella in firma
__________________
|Java Base| |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:00.












|








