|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
[Java] Passaggio variabili
Salve,premmetto che sono alle prime armi con Java,volevo sapere se è possibile passare una variabile definita all'interno di un main di una classe ad un metodo di un'altra classe per poterne utilizzare il valore?
Il ragionamento è un pò contorto ma spero si capisca...grazie... |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
__________________
Khelidan |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Allora provo a spiegare meglio,questa è la mia situazione:
-Possiedo una classe che ha al suo interno possiede solo un metodo main(): public class Classe1{ public static void main(String[] args) { /*qui faccio varie operazioni che mi portano a memorizzare una certa stringa nella variabile utente*/ String utente="stringa memorizzata nella variabile"; } } -Adesso posseggo un'altra classe che ha un metodo su cui dovrei usare il valore memorizzato nella variabile utente di prima.Posso importare tale valore in questa nuova classe??Allora: public class Classe2{ //costruttore public Classe2(){......} //metodo che deve usare il valore della variabile utente public void metodo1{ utente //mi serve il valore memorizato nel main() di Classe1.Vorrei che utente possegga quel valore. } } Adesso si capisce?? Ultima modifica di superjack81 : 24-05-2008 alle 07:57. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2002
Città: Roma - Milano - Lagos
Messaggi: 8579
|
Quote:
- se vuoi prendere direttamente dal "secondo metodo" il valore, la risposta e' no, non si puo' fare, perche', piu' in generale (nel senso che non dipende dal fatto che sia nel caso specifico un main) non puoi accedere al valore di una variabile locale, cioe' contenuta all'interno di un metodo... se devi fare cio', e' necessario che tu memorizzi il valore in una variabile di istanza, dichiarata pubblica - se invece, e mi pare sicuramente la soluzione piu' pulita, vuoi che un metodo di un'altra classe riceva il dato di cui sopra, semplicemente dovresti istanziare un'oggetto di quel tipo (classe 2), ed invocare opportunamente un metodo che richieda come parametro in ingresso una stringa (o quello che ti pare, ma mi pare di aver capito che nel caso specifico si tratti una stringa) che sara' proprio quella che intendi passare... a quel punto il valore potra' essere gestito da quel metodo, e tu potrai farci quello che ti pare, passarlo ad altri metodi della classe stessa nello stesso modo, metterlo in una variabile di istanza ecc. ecc. - ultima possibilita', anche se in generale la sconsiglierei, e' quella di mettere come argomento del costruttore della seconda classe un parametro di quel tipo, in questo modo quando dal main istanzierai l'oggetto questo sara' immediatamente visibile nel costruttore della classe 2, tenendo pero' sempre a mente che si tratta di una variabile locale di quel metodo e che quindi se poi vuoi che altri metodi di classe 2 vi accedano, dovrai comunque memorizzare il valore stesso in una variabile globale
__________________
--- --- VENDO AppleCare per Macbook Pro 15"/17" a 200E --- --- Ho trattato con mezzo forum, per l'altra meta' mi sto attrezzando... ![]() ![]() Perditempo di professione: signirr Ultima modifica di alphacygni : 24-05-2008 alle 09:07. |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
beh nel mio caso forse è proprio la prima possibilità che mi serviva...!!
Praticamante dovrei utilizzare il valore di una variabile locale creata dentro un main() di Classe1 e utilizzare questo valore dentro un metodo di un'altra classe(Classe2)...... Fino ad ora non sono ancora riuscito a risolvere il problema...cmq grazie!! ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
Codice:
public class Classe1{ public static void main(String[] args) { /*qui faccio varie operazioni che mi portano a memorizzare una certa stringa nella variabile utente*/ String utente="stringa memorizzata nella variabile"; Classe2 classe2 = new Classe2(); classe2.metodo1(utente); } } class Classe2{ private utente; //costruttore public Classe2(){......} //metodo che deve usare il valore della variabile utente public void metodo1()String variabile){ utente = variabile; //mi serve il valore memorizato nel main() di Classe1.Vorrei che utente possegga quel valore. } }
__________________
Khelidan |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Quote:
Allora non mi funziona.... Praticamente dentro metodo1() voglio che il valore della variabile utente2 sia lo stesso valore della variabile utente1.Capito adesso??? |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Puoi spiegare meglio il tuo problema?
Vuoi che metodo1 abbia come parametro una stringa o vuoi che metodo1 modifichi la stringa dell'altra classe?
__________________
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Io voglio solo che dentro metodo1 la variabile utente2 erediti il valore della variabile utente1....poi tutto l'altro non mi importa voglio solo ottenere quel risultato.....
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Questo è il punto di parenza......
public class Classe1{ public static void main(String[] args) { /*qui faccio varie operazioni che mi portano a memorizzare una certa stringa nella variabile utente*/ String utente1="stringa memorizzata nella variabile"; } } public class Classe2{ //metodo che deve usare il valore della variabile utente public void metodo1(){ String utente2 = valore; //vorrei che utente2 erediti il valore memorizzato in utente1 di Classe1 } } Chiaro.....??? Ultima modifica di superjack81 : 24-05-2008 alle 10:57. |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
allora dovrebbe andare bene il metodo proposto da khelidan1980
All'interno del main crea String utente1="asdfghhjl" //creo la stringa Classe2 c2 = new Classe2() c2.metodo1(utente1) In questo modo dovrebbe andare, ovviamente definendo in c2 il metodo metodo1(String utente)
__________________
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
mi sa che hai una confusione pazzesca in testa,cosa vuol dire dentro il metodo?Detta a parole povere i metodi servono ad operare azioni sugli oggetti,metodo1 che hai scritto te non fa una ben niente,semplicemente assegna un valore che non si sa da dove lo prende ad una variabile che una volta lanciato il metodo sarà irrecuperabile
__________________
Khelidan Ultima modifica di khelidan1980 : 24-05-2008 alle 11:03. |
![]() |
![]() |
![]() |
#14 | |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Quote:
|
|
![]() |
![]() |
![]() |
#15 | |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Quote:
|
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Mi sa che qui non ci stiamo capendo.
Puoi descrivere il tuo problema, non con Java, ma proprio quello che deve fare il tuo programma.
__________________
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
e cosa non va del codice che ti ho scritto io?
__________________
Khelidan |
![]() |
![]() |
![]() |
#18 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quello che ti interessa è creare un setter?
Crea in classe2 un attributo private String utente Per aggiornare questo valore puoi inserirlo al momento della costruzione dell'oggetto così public Classe2(String utente){ this.utente = utente; } oppure con un setter public void setUtente(String utente){ this.utente = utente; }
__________________
|
![]() |
![]() |
![]() |
#20 |
Member
Iscritto dal: Jan 2006
Messaggi: 83
|
Cavoli non pensavo fosse così difficile spiegare cosa mi serve...!Certo che se potreste essere qui a vedere e poter parlare a voce sarebbe tutto diverso....Cmq vi ringrazio per il tempo che avete impiegato per me....Grazie
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:22.