Ciao a tutti!!!
mi servirebbe per un programma che sto facendo, di creare un array con due caratteristiche (2D), ma con due tipi di variabili: String e Boolean...
E' possibile?
grazie a tutti
Ciao a tutti!!!
mi servirebbe per un programma che sto facendo, di creare un array con due caratteristiche (2D), ma con due tipi di variabili: String e Boolean...
E' possibile?
grazie a tutti
Di per sé, tecnicamente, è perfettamente possibile avere un array bidimensionale di Object in cui ogni "riga" è un array che contiene un String e un Boolean.
Esempio con inizializzazione:
codice:Object[][] array = { { "aaa", Boolean.TRUE }, { "bbb", Boolean.FALSE } };
Ma: 1) è poco bello, 2) troppo generico e 3) poco object-oriented.
L'ideale è "modellare" quelle due informazioni con una tua classe apposita. Non ho capito bene cosa rappresentano, io come esempio la chiamo TuoTipo. Quindi:
codice:TuoTipo[] array = { new TuoTipo("aaa", Boolean.TRUE), new TuoTipo("bbb", Boolean.FALSE) };
E TuoTipo dovrebbe essere una classe che, come minino, è un banale java "bean", ovvero con i campi privati per i dati, eventuali costruttori (almeno uno se costruisci come sopra) e metodi pubblici "getter" e/o "setter".
Ultima modifica di andbin; 20-06-2014 a 11:33
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok, per me stai parlando arabo...
a me servirebbe fare un array con delle stringhe e dei boolean in modo che il boolean si riferisca alla stringa corrispondente.... mi sono immaginato una cosa del genere:
Rossi true Verdi false Bianchi false Gialli true Blu false
dove Rossi, Verdi,... sono dei nomi (stringhe) e true, false sonno delle caratteristiche (boolean)
io avevo scritto così:
però non capisco la tua proposta....codice:String persone [][] = new String[26][2];
cosa sono "aaa" e "bbb"? e perchè hai dovuto scrivere boolean.true e boolean.false?!?!?codice:Object[][] array ={ {"aaa",Boolean.TRUE }, {"bbb",Boolean.FALSE } };
scusa per la mia ignoranza in merito![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
e cosa cambia? poi ho comunque il problema di assegnare a una stringa un boolean....
ahhhhh ok forse ho capito:
ora ho un array composto da:
un boolean Truee un boolean falsecodice:{"aaa",Boolean.TRUE },giusto?codice:{ {"bbb",Boolean.FALSE }
Così non potresti avere un "boolean" (né primitivo né oggetto Boolean).
Beh, io non sapevo cosa dovevano contenere le stringhe ....
Ma scusa .... non volevi dei "boolean"? (Nel primo caso che ho detto, essendo array di oggetti, devono per forza essere Boolean oggetto, non boolean primitivo).
Avere una classe es. Persona? Cambia che è innanzitutto più object-oriented, che puoi inserire eventuale "logica" nella classe e puoi estrarre/settare i dati con dei comodi getter/setter.
Per cortesia, chiarisciti le idee sulla programmazione ad oggetti.
Una stringa è una stringa .... al massimo può contenere es. "true". Ma questo non è un boolean!! (e non lo puoi usare come tale)
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok forse finalmente ho capito
cosi creo dentro a personed die oggetti boolean chiamati aaa e bbb e settati a true e a false.codice:Object[][] personed ={ {"aaa",Boolean.TRUE }, {"bbb",Boolean.FALSE } };
mi resta però un ultimo dubbio: così ho creato due boolean, se volessi creare una stringa chiamata ccc che contenga "ciao", per esempio?
grazie per la pazienza (e ce ne è voluta)
Un array bidimensionale di oggetti ha un array principale che contiene riferimenti ad altri array.
Ogni sotto array è appunto un array come quel es. {"bbb",Boolean.FALSE }
Il punto è che così è troppo generico e non ben "modellato". Non c'è scritto da nessuna parte cosa sono quei valori. Cosa rappresenta quel boolean? Solo dall'array non lo sai. Inoltre l'array è troppo "arbitrario". Se ti sbagli e metti es.
{Boolean.FALSE, "bbb" }
compila tutto ma poi non è quello che ti serve.
Inoltre l'array è di Object, se estrai qualcosa es. personed[1][0] (che nell'esempio è "bbb") questo lo "vedi" come Object, non come String.
Non puoi fare banalmente es.
System.out.println(personed[1][0].toUpperCase());
Perché l'oggetto referenziato da personed[1][0] è sì realmente un String ma il compilatore lo "vede" come Object e Object non ha toUpperCase(), quindi così non compila. Dovresti fare un cast ... e farlo ogni volta!
Non è quindi così che si modellano le cose. Sfrutta la programmazione ad oggetti, usa le classi.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet