Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Trasformare una stringa in variabile

27 views
Skip to first unread message

Nick

unread,
Dec 30, 2009, 7:32:35 AM12/30/09
to
Salve,

vorrei sapere se è possibile trasformare una stringa in una variabile.
Per esempio, se ho una stringa "label", posso utilizzarla,
trasformandola, come label.setText("Nome Giocatore") ?

grazie anticipatamente

Manuel T

unread,
Dec 30, 2009, 8:13:48 AM12/30/09
to
Nick wrote:

> vorrei sapere se � possibile trasformare una stringa in una variabile.


> Per esempio, se ho una stringa "label", posso utilizzarla,
> trasformandola, come label.setText("Nome Giocatore") ?

Lascia perdere, non � strada che spunta.

Lucio Benfante

unread,
Dec 30, 2009, 8:37:06 AM12/30/09
to
Nick ha scritto:
> Salve,
>
> vorrei sapere se � possibile trasformare una stringa in una variabile.

> Per esempio, se ho una stringa "label", posso utilizzarla,
> trasformandola, come label.setText("Nome Giocatore") ?

Con po' di fatica lo si pu� fare, anche se � pi� una cosa da linguaggi
di scripting.

Nella mia esperienza non ce n'� quasi mai bisogno: cosa stai cercando di
ottenere?

Ciao
Lucio
--
Lucio Benfante
JUG Padova http://www.parancoe.org ...have a look at it!
www.jugpadova.it http://www.jugevents.org

Nick

unread,
Dec 30, 2009, 8:45:56 AM12/30/09
to
> Lascia perdere, non è strada che spunta.

Lo sospettavo....cmq provo a spiegare il perchè di questa mia
richiesta e sperare in un'alternativa migliore della mia.

Per un esame universitario, sto realizzando un programma per giocare a
poker e dopo un bel pò di tempo passato col prolog è giunto il momento
di mettere mano al java (lo sto studiando per l'occasione).

Per adesso, sto riscontrando le difficoltà maggiori sulla creazione
dell'interfaccia grafica, ma pian piano ne sto venendo fuori...

In un tavolo da poker possono sedersi massimo 10 giocatori, così ho
posizionato, su un Jframe, 10 label (giocatore1, giocatore2, ...,
giocatore10) per indicare il nome del giocatore. Giocatori che
rappresento tramite la seguente classe

-------------------------------------------------------------------------------------------------------------------
public class Giocatore {

private String nome;
private int contante;
private int posto;
private ArrayList carte;
... ecc..
}
-------------------------------------------------------------------------------------------------------------------

dove con int posto specifico appunto su quale sedia (ovvero una delle
10 label create in precedenza) il giocatore si è seduto. Allo stato
attuale per posizionare sulla label(sedia) corretta il giocatore sono
costretto ad utilizzare un switch.

Ecco un esempio:
-------------------------------------------------------------------------------------------------------------------

switch(posto){
case 1:
nomeGiocatore1.setText(nomeGiocatore);
contanteGiocatore1.setText(contanteGiocatore);
break;
case 2:
nomeGiocatore2.setText(nomeGiocatore);
contanteGiocatore2.setText(contanteGiocatore);
break;
case 3:
nomeGiocatore3.setText(nomeGiocatore);
contanteGiocatore3.setText(contanteGiocatore);
break;
case 4:
nomeGiocatore4.setText(nomeGiocatore);
contanteGiocatore4.setText(contanteGiocatore);
break;
case 5:
nomeGiocatore5.setText(nomeGiocatore);
contanteGiocatore5.setText(contanteGiocatore);
break;
case 6:
nomeGiocatore6.setText(nomeGiocatore);
contanteGiocatore6.setText(contanteGiocatore);
break;
case 7:
nomeGiocatore7.setText(nomeGiocatore);
contanteGiocatore7.setText(contanteGiocatore);
break;
case 8:
nomeGiocatore8.setText(nomeGiocatore);
contanteGiocatore8.setText(contanteGiocatore);
break;
case 9:
nomeGiocatore9.setText(nomeGiocatore);
contanteGiocatore9.setText(contanteGiocatore);
break;
case 10:
nomeGiocatore10.setText(nomeGiocatore);
contanteGiocatore10.setText(contanteGiocatore);
break;
}
-------------------------------------------------------------------------------------------------------------------

Questa è una soluzione che non mi piace molto!!! Così mi è venuta
l'idea di trasformare una stringa in variabile
per eliminare lo switch con una riga di codice del genere ?
("nomeGiocatore"+posto).setText("Nome").


Avete qualche idea in merito ? Come potrei aggirare l'uso dello
switch ?

P.S:
non penso che l'idea di creare dinamicamente le 10 label e settare
subito il nome sia il migliore, perchè nel corso della partita dovrei
aggiornare le label con altre informazioni come il contante rimasto ed
altre info. Quindi il problema di individuare la label corretta
rimarrebbe.

spero di essermi spiegato chiaramente

Lucio Benfante

unread,
Dec 30, 2009, 8:51:51 AM12/30/09
to
Nick ha scritto:
>
> Per un esame universitario

lol...evviva l'universit�! :)

Mai sentito parlare degli array?

nomeGiocatore[posto].setText(nomeGiocatore);
contanteGiocatore[posto].setText(contanteGiocatore);

Nick

unread,
Dec 30, 2009, 9:04:14 AM12/30/09
to
> On 30 Dic, 14:51, Lucio Benfante <benfa...@mailandnews.com> wrote:
> lol...evviva l'universit ! :)

eh si..ho unito l'utile al dilettevole :D:D

> Mai sentito parlare degli array?

ops che stupido, ho pensato a tutto tranne alla soluzione più
ovvia...devo smettere di mettermi a studiare/programmare quando vado a
dormire la mattina...sto ancora dormendo ;)

grazie

Oliver

unread,
Dec 31, 2009, 7:23:55 AM12/31/09
to
per essere un po' piu' OO userei una Map

Buon anno nuovo
Oliver

Lucio Benfante

unread,
Jan 1, 2010, 4:58:56 AM1/1/10
to
Oliver ha scritto:

> per essere un po' piu' OO userei una Map

Potresti spiegarmi perch� una Map sarebbe pi� OO?

A parte il "problema" del pi� o meno OO (qualunque cosa voglia dire),
non mi pare che una mappa sia la struttura adatta in questo caso. Le
specifiche complete non ce le ha dette, ma sembrerebbe che abbia una
numero fisso di dati ordinati, a cui deve accedere per indice. Usare una
mappa vorrebbe dire invece accedere usando l'indice probabilmente in una
maniera del genere:

mappa.get("giocatore"+posto)...ecc.ecc..

Un uso di una mappa piuttosto inutile, e anche penalizzante in termini
di performance, rispetto ad un accesso per indice ad un array (anche se
le performance in questo caso non credo siano un problema, � comunque
pi� macchinoso).

Buon anno

Alessandro Carraro (JUG Padova)

unread,
Jan 2, 2010, 5:16:01 AM1/2/10
to

Concordo con Lucio. Btw, "per essere un po' più OO", io userei una
java.util.List (per l'OP, che potrebbe essere confuso dall'uso delle
interfacce, suggerisco direttamente l'uso di una java.util.ArrayList)

buon anno a tutti!

Oliver

unread,
Jan 2, 2010, 1:45:28 PM1/2/10
to
On Jan 1, 9:58 am, Lucio Benfante <benfa...@mailandnews.com> wrote:
> Oliver ha scritto:
>
> > per essere un po' piu' OO userei una Map
>
> Potresti spiegarmi perché una Map sarebbe più OO?

Sarebbe piu' object oriented perche' il posto diventerebbe un oggetto.

La mappa dovrebbe essere qualcosa come
Map<Posto, Label> labelNomePostoMap

Non credo che l'ordinamento debba essere mantenuto, quindi un HashMap
dovrebbe andare bene.


L'accesso sarebbe
mappa.get(giocatore.getPosto()).setText(giocatore.getNome());


Il motivo per cui io lo consideri piu' OO, e' perche il posto puo'
cambiare, e non essere limitato ad un numero


Buon anno
Oliver


Nick

unread,
Jan 3, 2010, 7:37:20 AM1/3/10
to
Per adesso ho utilizzato gli array per salvare le istanze delle
jlabel. Metodo che funziona egregiamente quando al gioco partecipano
10 giocatori, ma se volessi dare l'opportunità di scegliere quanti
giocatori far sedere al tavolo, il problema si ripresenterebbe.

for(int posto = 0; posto < numGiocatori; posto++)
nomeGiocatore[ posto ] = ?? come l'associo l'istanza della label ??


L'unica soluzione che mi sta venendo in mente è di utilizzare un altro
array d'appoggio. Ovvero:

postoGiocatore[ 0 ] = jlabel0;
postoGiocatore[ 1 ] = jlabel1;
...
postoGiocatore[ 9 ] = Jlabel9;

e poi

for(int posto = 0; posto < numGiocatori; posto++)
nomeGiocatore[ posto ] = postoGiocatore[ posto ];


Esistono altre soluzioni?


grazie mille anticipatamente

0 new messages