|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
[JAVA] aiuti per un progetto
Salve gente,
avrei qualke casotto per un progetto da fare. Apro questo 3D tenendovi aggiornati sui problemi ke mi capiteranno nel farlo :P In primis vorrei chiedervi come fare a creare tot array in base al parametro ke gli pasos in ingresso, ovvero se faccio prg 10 lui mi deve creare 10 array. Non riesco a capire come fare perkè anche facendo array.[i] o [i].array in un for mi da errori di compilazione e googlando un bel po nn ho trovto soluzioni, spere come ovviare? Devo per forza passarli in ingresso è l'unica soluzione! Grazie in anticipo
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Da quello che ho capito, stai cercando di fare un array bidimensionale, dove la seconda dimensione te la dà il parametro in ingresso.
Se ti crea problemi, puoi sempre fare un vettore di array, così tagli la testa al toro e non fai confusioni con gli indici PS: e neanche coi pollici
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
No no!
in primis devo per forza usare gli array magari potessi fare di testa mia poi io dovrei fare in questo modo. java programma 8 quindi il programma mi crea 8 array, poi faro una savitchin che mi chiede in ingresso 8 numeri uno per ogni array ke dovro spezzare in singole cifre per riempire l'array per poterlo poi darlo in pasto a degli algoritmi di ordinamento. Quindi volevo capire se è possibile creare degli array con un ciclo for ke faccia array1 array2 arraynumeromaxkehodato oppure son costretto a operare con i bidimensionali che nn avendoli mai usati tendevo a usare come seconda alternativa :P
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Di sicuro se hai M=numero di array passati al programma, ognuno di dimensione fissa N, la cosa più elegante è una bella matrice MxN; per come gestirli, cerchi un po' di doc
Se non vuoi, o se la dimensione dei singoli array varia, puoi usare il vettore (scartato, anche se non capisco il motivo) o una array di oggetti. Dovresti verificare, ma dovrebbe funzionare qualcosa del tipo: Object arrayGlobale[] = new Object[dimensioneIndicata]; e in ogni elemento dell'arrayGlobale, metti il singolo array. Perdona la franchezza, ma delle 3 possibilità (array bidimensionale, vettore di array, array di array) questa mi sembra la più scandalosa |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Io ti faccio un esempio supponendo un array bidimensionale di int: Codice:
int narray = 10; /* Quello che ricevi in input */ int[][] biarray = new int[narray][]; Codice:
biarray[0] = new int[dim1]; biarray[1] = new int[dim2]; ... biarray[9] = new int[dim10];
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
Dopo un po di indagini in effetit mi conviene usare i bidimensionali!
Ora pero ho un problema. ho fatto questo programma funzionante: public class test { public static void main (String[] args) { System.out.println ("Inserisci quanti array vuoi: "); int input = SavitchIn.readLineInt(); System.out.println (""); int[][] matrice = new int[input][]; int random; // Creo gli array e li riempo di zeri for (int i=0; i<input; i++){ matrice[i] = new int[10]; for (int a=0; a<10; a++) { matrice[i][a] = 0; System.out.println ("Array " + i + " ha valore " + matrice[i][a] + " in posizione " + a); } } // Inserisco i valori da input nell array spezzandoli in singole cifre for (int i=0; i<input; i++){ System.out.println ("Inserisci il numero per l'array " + i); String word = SavitchIn.readLine(); int b = word.length(); for (int j=0; j<b; j++){ char c = word.charAt(j); System.out.println("Carattere preso: "+ c ); matrice[i][j] = c; System.out.println ("Array " + i + " ha valore " + matrice[i][j] ); } } } } Ora il programma funge ma l'ultimo print non mi da i valori corretti. SE metto come valore 65 il char c trova sia 6 ke 5, ma la stampa mi da numeri sfasati! SApete come risolvere? sto impazzendo su sta cosa nn trovo proprio l'errore :P
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Nel blocco finale tu chiedi una stringa, supponiamo "123". Ognuno di questi 3 caratteri viene preso singolarmente e messo nell'array (che è di int). Quindi tu stai memorizzando il valore del carattere! Cioè stamperebbe 49, 50 e 51. Se vuoi stampare proprio il carattere hai 2 possibilità: - fare il cast: System.out.println ("Array " + i + " ha valore " + (char) matrice[i][j] ); - dichiarare l'array non di int ma di char.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
VEro ke erroraccio
Ora con il cast funge bene! pero ho un dubbio. l'array contieneil valore che gli do in input oppure contiene il valore "ASCII" ? Perkè fare gli int non mi conveniva poiche dovevo "spezzare" i numeri interi in singoli numeri e nn ho trovato metodi che lo facevano, menter per le stringhe esiste il charAt che mi fa prendere le singole cifre
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
In java non esistono array bidimensionali: hai sempre a che fare con array di oggetti, e quindi con array di array.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Con il codice come l'hai postato, ogni singolo carattere della stringa che inserisci viene memorizzato nell'array (tralasciamo che è di int) e quindi potresti mettere anche caratteri che non siano dei digit 0-9. In pratica non stai maneggiando dei valori numerici ma dei singoli caratteri. La mia impressione è che non fosse questo che si voleva fare ma bensì una cosa come la seguente: ricevo una stringa del tipo "10 20 30 40" e nell'array bisogna mettere: matrice[i][0] = 10; matrice[i][1] = 20; ecc... Se è questo che si voleva fare non è difficile. La stringa la prendi già in input con: String word = SavitchIn.readLine(); (tra l'altro cos'è SavitchIn? Forse una classe di utilità fatta da qualcuno?) A questo punto (nota, per Java 1.4+) si può usare: String[] strvalori = word.split ("\\s+"); /* spezza i valori usando gli spazi come separatori */ A questo punto prendi ogni elemento di strvalori e con il metodo parseInt della classe Integer lo converti in numero e lo memorizzi nell'array. Così ti quadra di più? Fammi sapere!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
Allora faccio un po di chiarimenti sul progetto.
dovrei scrivere un programma che prende in ingresso una quantita di numeri di 10 cifre ( se sono meno di 10 cifre i rimanenti "spazi" li riempio di 0 ) e queste cifre devon esser rappresentate come array di 10 elementi. poi una volta presi in ingresso devo riordinare gli array con il radix sort ke al suo interno ha un counti sort (un bordello ma ci pensero piu avanti PEr questo mi serve avere negli array numeri veri e propri (non ASCII) per poter poi fare i confronti e ordinarli! P.s. La savitchIn è una classe ke permette di leggere input da tastiera
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quindi per te questo non sarebbe un array bidimensionale??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Oltre a scansionare la stringa e prendere il singolo carattere con charAt (come fai già), devi usare il metodo statico digit() della classe Character, che ti restituisce il valore del digit (es. '8' -> 8) e sei a posto. Nota, ti ritorna -1 se il char non è un digit! Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 6949
|
Tadàààààà!!!
Ho risolto usando int c = Integer.parseInt("" + word.charAt(j)); In questo modo uso il charAt per i singoli caratteri, e il parse per mandarli come int e il tutto funge bene!! Grazie mille a tutti!!! Tanto tempo poke ora e riscrivo un altro problema mi sa Ancora grazie
__________________
Ho fatto affari con: oldfield, turbodiesel80, emadrc, Alex_, Emozioni55, Kanon, Dacker, HaRiMau, ~{FoREvEr}~, cuorern, zio.luciano,Maestro Joda, rdaelmito, leddlazarus, Jerry_MK2, wella,mattxx88, 4sci,dema86,matfla9561, Rankstrail90,Tecnomania01, castigator222,bragez skyfunk, sgogeta,medros, Salvio66, thekubrik, drazen04, sinadex,drazen04, laba, skiocink, ZioPippoSSJ, nicfit, MisterD, wxPhyton, ulisss Pessimi utenti: pidegioan,Andry82,gioint27,thecorecicci,gigarobot,Ed_Bunker |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
se vuoi lo puoi vedere con un array bidimensionale, ma non è un array bidimensionale nel senso proprio del termine, come li trovi in c/c++, in cui allochi uno spazio di memoria contiguo che contiene l'intera matrice In java hai sempre una rray di riferimenti ad altri oggetti, che in questo caso saranno array a loro volta dando l'illusione di una matrice.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Se si accetta di chiamare un oggetto di quel tipo "array", mi sembra duro non accettare di chiamare array bidimensionale un'organizzazione di oggetti come quella considerata. Dal mio canto, ho sempre chiamato (e non penso di avere sbagliato), vettori bidimensionali vettori in cui ogni elemento era a sua volta un vettore. La bidimensionalità (o tridimensionalità, ecc) è legata alla rappresentazione nello spazio N-dimensionale di un oggetto, non alla sua organizzazione. Sempre IMHO |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Non voglio contestare il fatto che possa esesre chiamato array bidimensionale, lo uso anche io quel termine, ma ero intervenuto perchè mi era sembrato di aver letto qualcosa del tipo: o usi un array bidimensionale o un array di array, visto che in java sono la stessa cosa, a differenza del c/c++ in cui sono cose diverse.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:08.



















