Salve,
sto scrivendo un programma (a scopo didattico) in cui mi serve cercare una stringa all'interno di stringhe in un ArrayList. Mi spiego meglio: devo gestire un elenco di stringhe, e offrire la possibilità di cercare fra di esse una stringa particolare. Per complicarmi la vita, vorrei stampare tutte le stringhe dell'array che contengono la stringa anche in mezzo ad altri caratteri. Ad esempio, se nell'elenco ho le parole, "apostrofo" e "casa", e l'utente cerca "pos", gli stampo "apostrofo" come risultato della sua ricerca.
Questo è il metodo che ho pensato (le stampe a video delle sottostringhe sono solo per vedere dove sbaglio ed il boolean serve per un'altra parte del programma):
codice:
public boolean find(String name){
System.out.println("dentro a find");
boolean ok=false;
for(int i=0; i<names.size(); i++)
for(int j=0; j<(names.get(i).length()-name.length()); j++){
System.out.println("Sottostringa da "+j+" per "+name.length()+" caratteri.");
System.out.println(names.get(i).substring(j, name.length()));
if(names.get(i).substring(j, name.length()).equals(name)){
System.out.println(names.get(i));
ok=true;
}
}
return ok;
}
E al run time, cercando ad esempio "afo" in "apostrofo" stampa le sottostringhe apo, po, o, per po
i dare l'errore: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Non ho idea di dove stia sbagliando...