Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202

    [JAVA] scambiare due elementi di una lista

    Ciao,
    sto semplicemente cercando di scambiare tra loro due elementi in una lista. L'utente sceglie l'elemento da spostare e la posizione in cui spostarlo (newPos), io mi preoccupo di pigliare l'elemento attualmente nella nuova posizione e di metterlo nella posizione attuale di quello scelto (curPos) dopo aver messo quello scelto in newPos.
    Quello che accade è che il programma non funziona, mi si pianta la servlet (pagina bianca) e non ho alcun messaggio d'errore da spulciare.

    Qui la parte di codice incriminata:
    codice:
    iterator = sortedList.listIterator();
    int curPos = 0;
    Element tmpEl = (Element)sortedList.get(newPos);
    while (iterator.hasNext()) {
       image = (Element)iterator.next();
       // se l'img all'interno della lista è quella che l'utente vuole spostare
       if (...) {
          curPos=iterator.previousIndex();
          sortedList.set(newPos,image);
          sortedList.set(curPos,tmpEl);
          }
       }
    Grazie...
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  2. #2
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Se lei gli passa gli indici di scambio attaverso una form (ovvero curPos e newPos sono note) e deve scambiare SOLO due elementi dovrebbe bastare un semplice scambio :

    codice:
    Element tmpEl = (Element)sortedList.get(newPos);
    sortedList.set(newPos,(Element)sortedList.get(curPos));
    sortedList.set(curPos,tmpEl);

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    E` più o meno quello che ho fatto, l'unica differenza è che curPos non lo conosco ma me lo ricavo conoscendo l'immagine che vuole spostare... con il ListIterator scorro tutti gli elementi e quando trovo l'immagine che combacia ne estraggo la posizione.
    Poi scambio.
    E non funziona.
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  4. #4
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Se conosci newPos e non curPos

    codice:
    iterator = sortedList.listIterator();
    int curPos = 0;
    Element tmpEl = (Element)sortedList.get(newPos);
    while (iterator.hasNext()) {
       image = (Element)iterator.next();
       // se l'img all'interno della lista è quella che l'utente vuole spostare
       if (...) {
          curPos=iterator.nextIndex();
       }
    }//end while
    sortedList.set(newPos,(Element)sortedList.get(curPos));
    sortedList.set(curPos,tmpEl)
    così dovrebbe andare.

  5. #5
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Se nn va mi può postare la condizione dell'if?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    previousIndex() dovrebbe essere corretto, anche spostando fuori dal while le istruzioni di set ottengo lo stesso pagina bianca.
    Ho pensato a qualche puntatore che punta al vuoto, ma dove? Sono proprio le due istruzioni di set a dare il problema e nessuna contiene riferimenti al vuoto.
    Nella condizione dell'if c'è un confronto tra un parametro ricevuto in querystring e il valore di un campo nel database XML:

    codice:
    if (image.getChildText("url").equals(imageName)) {
       [...]
       }
    Il programma entra nell'if, ho fatto delle prove facendogli stampare dei valori, e individua correttamente i due indici curPos e newPos.
    Il problema sta proprio nelle istruzioni di set idee?

    Grazie.
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.