Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Mi aiutate a capire questo pezzo di codice?

    Ho un sacco di difficoltà a comprendere gli utilizzi meno ovvi dei vari cicli.
    Per esempio questo codice:
    codice:
        String searchMe = "Look for a substring in me";
            String substring = "bst";
            boolean foundIt = false;
            int max = searchMe.length()-substring.length();
        test:
            for (int i = 0; i <= max; i++) {
                int n = substring.length();
                int j = i;
                int k = 0;
                while (n-- != 0) {
                    if (searchMe.charAt(j++) != substring.charAt(k++)) {
                        continue test;
                    }
                }
                foundIt = true;
                    break test;
            }
    Praticamente deve cercare una sottostringa in una stringa.
    Perché il max è stato impostato così e non come semplicemente la lunghezza totale della stringa in cui cercare?
    Ho provato a mettere il max come lunghezza totale della stringa madre e va tutto bene, finché non metto cose che non stanno nella stringa, e a quel punto mi da un'eccezione di string out of range...
    In linea generale tutti cicli sopra usati non mi sono chiari.
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non c'è bisogno cercare dopo max perché la stringa cercata non ci può più stare dopo questa posizione.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ehm fin lì ci arrivavo, quello che non capisco è perché il max è impostato come differenza fra la stringa principale e la sottostringa da cercare.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Jamie04
    Ehm fin lì ci arrivavo, quello che non capisco è perché il max è impostato come differenza fra la stringa principale e la sottostringa da cercare.

    String searchMe = "Look for a substring in me";
    String substring = "bst";
    boolean foundIt = false;
    int max = searchMe.length()-substring.length();

    La stringa searchMe è lunga 27 caratteri (se ho contato giusto), da 0 a 26.
    substring è lunga 3.

    max vale quindi 24.

    Se in searchMe ho superato quella posizione senza un match sarà impossibile trovare substring (per una semplice questione: in meno di tre caratteri non posso trovare una stringa di tre caratteri!) perciò termino la ricerca.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Te l'ha detto già neroux...

    se tu hai una stringa in cui esegui la ricerca lunga 10 caratteri e la sottostringa da ricercare lunga 4 caratteri, quello che fai è:

    confronti il primo arattere della sottostringa col primo carattere della stringa. Se sono uguali, confronti il secondo carattare con il secondo carattere.
    Se sono diversi invece "avanzi" di una posizione nella stringa e confronti il carattere nella nuova posizione con il primo carattere della sottostringa da ricercare.

    Ripeti il procedimento un certo numero di volte... ma quante? Tornando all'esempio numerico di cui sopra: se la tua sottostringa è lunga 4 e la tua stringa è lunga 10, se non hai alcuna corrispondenza al 6° carattere, è inutile continuare la ricerca, visto che nella stringa principale resterebbero solo 3 caratteri da confrontare, mentre la sottostringa da ricercare è lunga 4.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da Jamie04
    Ehm fin lì ci arrivavo, quello che non capisco è perché il max è impostato come differenza fra la stringa principale e la sottostringa da cercare.
    Te lo avevo appena spiegato

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

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 © 2025 vBulletin Solutions, Inc. All rights reserved.