Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de boucle et de substring()

Sujet résolu
    27 juillet 2015 à 8:29:22

    Salut! J'étais en train de faire un petit logiciel qui permettrais de sauvegarder des liens et de les rechercher en utilisant des mots clés, mais je me suis trouvé confronté à un problème de substring qui me parait vraiment étrange : voila le code de la partie génante:

    while(lienActuelTest.substring(j, j+4) != "<!--"){
    	j++;
    System.out.println(lienActuelTest.substring(j, j+4));
    }
    Et avant la boucle, lienActuelTest vaut "<a href=\"http://codes-sources.commentcamarche.net/faq/369-swing-partie-2-actionlistener-listener-jbutton\">Java</a> <!--java,jbutton,actionlistener,programmation--></br>", et l'instruction dans la boucle m'affiche :

     Et l'instruction dans la boucle m'affiche ceci :

    a hr
    hre
    href
    ref=
    ef=\
    f=\"
    =\"h
    \"ht
    "htt
    http
    ttp:
    tp:/
    p://
    ://c
    //co
    /cod
    code
    odes
    des-
    es-s
    s-so
    -sou
    sour
    ourc
    urce
    rces
    ces.
    es.c
    s.co
    .com
    comm
    omme
    mmen
    ment
    entc
    ntca
    tcam
    cama
    amar
    marc
    arch
    rche
    che.
    he.n
    e.ne
    .net
    net/
    et/f
    t/fa
    /faq
    faq/
    aq/3
    q/36
    /369
    369-
    69-s
    9-sw
    -swi
    swin
    wing
    ing-
    ng-p
    g-pa
    -par
    part
    arti
    rtie
    tie-
    ie-2
    e-2-
    -2-a
    2-ac
    -act
    acti
    ctio
    tion
    ionl
    onli
    nlis
    list
    iste
    sten
    tene
    ener
    ner-
    er-l
    r-li
    -lis
    list
    iste
    sten
    tene
    ener
    ner-
    er-j
    r-jb
    -jbu
    jbut
    butt
    utto
    tton
    ton\
    on\"
    n\">
    \">J
    ">Ja
    >Jav
    Java
    ava<
    va</
    a</a
    </a>
    /a>
    a> <
    > <!
    <!-
    <!-- // Pourquoi ça ne s'arrête pas ici
    !--j
    --ja
    -jav
    java
    ava,
    va,j
    a,jb
    ,jbu
    jbut
    butt
    utto
    tton
    ton,
    on,a
    n,ac
    ,act
    acti
    ctio
    tion
    ionl
    onli
    nlis
    list
    iste
    sten
    tene
    ener
    ner,
    er,p
    r,pr
    ,pro
    prog
    rogr
    ogra
    gram
    ramm
    amma
    mmat
    mati
    atio
    tion
    ion-
    on--
    n-->
    --><
    -></
    ></b
    </br
    /br>

    Et au final, j'ai cet erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 171
    	at java.lang.String.substring(Unknown Source)
    	at com.qo.doc.core.Rechercher.rechercherLiens(Rechercher.java:44)
    	at com.qo.doc.browser.gui.BrowserWindow.actionPerformed(BrowserWindow.java:42)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$500(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    



    Voilà, merci d'avance pour vos réponses

    Elvap

    -
    Edité par Elvap 27 juillet 2015 à 8:31:09

    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2015 à 14:33:18

      Bonjour,

      Pour comparer des objets (ici, des String), on utilise la méthode equals, pas == ou !=.

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2015 à 15:08:06

        D'accord, merci bien, je teste ça tout de suite:)

        EDIT: Merci, ça fonctionne, je pensais que c'était comme en C++:)

        -
        Edité par Elvap 27 juillet 2015 à 15:17:20

        • Partager sur Facebook
        • Partager sur Twitter

        Problème de boucle et de substring()

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown