|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
[Java] Problema stupido con ciclo
Inanzitutto scusate l'entità stupida della domanda, ma sono proprio agli inzi con Java (e con la programmazione in generale)
Codice:
if(!(line2.isEmpty())){
char[] linea2=line2.toCharArray();
int j=0;
while(j<linea2.length){
String clienteTemp="";
while(linea2[j]!=';' && j<line2.length()){
clienteTemp+=linea2[j];
System.out.println(linea2[j]+" "+j);
j++;
}
if(j<linea2.length){
j++;
}
waiting=Arrays.copyOf(waiting, waiting.length +1);
waiting[waiting.length -1]=clienteTemp;
}
}
Quello che mi succede è che mi solleva un eccezione ArraysOutOfBounds a while(linea2[j]!=';' && j<linea2.length), eccezione che scompare se line2="De Fabris;Bluastri;" o ponendo j<linea2.length -1 (restituendomi però Bluastr) Sicuramente è una stronzata, ma ci sto sbattendo il grugno e non ne esco fuori, causa anche stanchezza. metto pure l'output: Quote:
Grazie mille ^^ Ultima modifica di cifa : 17-05-2011 alle 21:55. |
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Non uso moltissimo Java, ma non ho mai sentito la necessità di tirare in ballo array di char.
Immagino tu debba scomporre la stringa nelle parti delimitate dai punti e virgola (ammetto di essermi arreso dopo poco nell'analisi del frammento di codice). Se ho interpretato correttamente ti consiglierei molto caldamente l'uso di StringTokenizer.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12862
|
Se non ricordo male StringTokenizer è deprecato, adesso si usa il metodo "split()" della classe String.
Codice:
String a = "pippo;pluto";
String[] tokens = a.split(";");
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
Quote:
Grazie mille è proprio quello che cercavo! Come già detto ancora ho pooochissima dimistichezza con Java e non son molto in grado neanche di documentarmi come si deve XD Grazie tante davvero (anche se mi ero fatto un lavorone inutile, quel frammento fa parte di centiniaia di righe di codice fatte pensando di ottenere info in quell'ostruso modo) EDIT: Grazie mille anche a te WarDuck, domani mi metto a studiare tutte le opzioni Ultima modifica di cifa : 17-05-2011 alle 22:33. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12862
|
Quote:
Trovi tutto qui (diviso per classi): http://download.oracle.com/javase/6/docs/api/ |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La resa non è nel dna di un programmatore.
Inverti le condizioni nel ciclo while.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
Quote:
Grazie mille comunque, scusa la domanda che a te sembrerà idiota, come mai in questa maniera funziona ? Grazie |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Nel codice originale hai correttamente intuito che occorresse verificare il valore di j prima di usarlo come indice per l'accesso ad un componente dell'array ma potresti non aver notato che hai un accesso all'array con lo stesso indice anche nella condizione del ciclo while:
while(linea2[j]!=';' && j<line2.length()){ Per com'è fatto il codice, anche in quel punto j può essere "out of bounds" (nel nostro caso uguale alla lunghezza dell'array) Controllando prima di accedere il problema si risolve. E' poi una scelta saggia quella di rivolgersi alle api standard perchè se c'è un punto in cui Java non eccelle è certamente la sinteticità, quando si può è meglio risparmiare anche le briciole.
__________________
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: Feb 2006
Città: Parma
Messaggi: 3010
|
Uh, deprecato!
Grazie della precisazione, d'ora in avanti dovrò ricordarmi dell'esistenza di split... Una domanda mi sorge quindi spontanea: come ci si può accorgere che una classe/funzione che si è usata più volte e di cui non si ha necessità di consultare la documentazione è stata deprecata? Poi, non vorrei dire, ma anche nella documentazione non è esattamente messo in evidenza il fatto che sia una classe legacy. (solitamente uso Eclipse e non ho mai notato alcun riferimento alla cosa né in warning né in completamento/help in linea)
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
Quote:
Grazie mille di nuovo, gentilissimo |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Giusto legacy, mi son lasciato trascinare ed ho perso di vista la sfumatura.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Bah, vi dirò: io in taluni casi StringTokenizer lo uso ancora e senza vergogna, se non ho la stretta neccessità di appoggiarmi alle regex
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Va' che alzare il gomito alle 11 di mattina non giova al cerebro
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:17.




















