Lettura vertici figura

di il
2 risposte

Lettura vertici figura

Salve a tutti, non riesco a capire come poter leggere un codice in modo tale che le coordinate x siano tutte quelle pari e le coordinate y siano tutte quelle dispari.. il codice di input è il seguente:

Triangolo,2,(0,0),(0,1),(2,0)
Rettangolo,3,(10,10),(10,20),(20,20),(20,10)

Mentre lo script è :

String[] r = line.split(",");
Vertice v;
lati= new ArrayList<Vertice>();
nome=r[0];
id=Integer.parseInt(r[1]);
//System.out.println(r.length);
for(int i=2;i<r.length;i++){
if(i%2==0){
x=Integer.parseInt(r.replaceAll("\\(|\\)", ""));
}
if(i%2!=0){
y=Integer.parseInt(r.replaceAll("\\(|\\)", ""));
}
v=new Vertice(x,y);

lati.add(v);

Dopodichè vado a stampare i lati.. ma il problema è che mi stampa 2 volte ogni coordinata, non riesco a trovare una soluzione migliore degli if, ma il problema è che continua a stamparmi 2 volte ogni singola coordinata

2 Risposte

  • Re: Lettura vertici figura

    Anto11796 ha scritto:


    			for(int i=2;i<r.length;i++){
    				if(i%2==0){
    					x=Integer.parseInt(r[i].replaceAll("\\(|\\)", ""));
    				}
    				if(i%2!=0){
    					y=Integer.parseInt(r[i].replaceAll("\\(|\\)", ""));
    				}
    			v=new Vertice(x,y);
    			
    			lati.add(v);
    La questione è che il lati.add(v) lo fai nel ciclo sempre, quindi per TUTTI gli indici. Mentre se indice pari prendi x altrimenti y. Quindi hai il DOPPIO di oggetti Vertice e con informazioni parziali (e l'altro valore è quello "vecchio", precedente).

    Semplicemente: fai il for in modo che "salti" di 2 indici e nel corpo prendi x (a indice i+0) E y (a indice i+1).
    Tutto qui (non servono if per questo).

    P.S. il replaceAll che usa le regex, solo per togliere le parentesi, è un pochino eccessivo, ti basta il replace(CharSequence, CharSequence) di String (che esiste da Java 5!)
  • Re: Lettura vertici figura

    Ciao andbin, ti rigrazio infinitamente per la risposta splendida e molto chiara!
    Ho capito perfettamente e son riuscito a risolvere il mio problema aggiungendo un piccolo tassello alla mia conoscenza di java..GRAZIE!
Devi accedere o registrarti per scrivere nel forum
2 risposte