Ci sono diversi errori: te li ho segnalati con un commento nel codice.
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class GestioneStringhe
{
public List<String> listaDiStringhe;
public GestioneStringhe()
{
listaDiStringhe = new LinkedList<String>();
}
public void leggiStringhe()
{
// creo un oggetto Scanner per leggere input da tastiera
Scanner sc = new Scanner(new InputStreamReader(System.in));
String line;
// ciclo potenzialmente infinito
while(true) //(1 != 0)
{
System.out.print("Inserire parola: ");
// leggo la riga inserita dall'utente
line = sc.nextLine();
// se la riga e' vuota allora smetto di leggere
if(line.equals("")) break;
// aggiungo il numero alla lista
listaDiStringhe.add(line);
}
// chiudo lo scanner
sc.close();
}
/**
* Metodo che stampa la lista
*/
public void stampaLista(LinkedList<String> listaDiStringhe)
{
for(int i=0; i<listaDiStringhe.size(); i++)
{
System.out.println(listaDiStringhecasa.get(i)); // <-- listaDiStringhecasa ??? Cos'è casa ?? :-)
}
}
public List<String> getListaDiStringhe() {
return listaDiStringhe;
}
public void setListaDiStringhe(List<String> listaDiStringhe) {
this.listaDiStringhe = listaDiStringhe;
}
//metodo per l'ordinamento di una lista di stringhe con insertion sort
public void insertionSort() {
String tmp; // questo cambia!
int j; // questo NO!
for(int i=1; i<listaDiStringhe.size(); i++) {
j=i-1;
tmp = listaDiStringhe.get(i);
while(j >= 0 && listaDiStringhe.get(j).compareTo(tmp) > 0) {
// "scorrimento"
listaDiStringhe.set(j+1, listaDiStringhe.get(j));
j--;
}
// inserimento
listaDiStringhe.set(j+1, tmp);
}
}
//metodo che, data una stringa in input, restituisce la stringa invertita
public static String invertiStringa(String daInvertire)
{
StringBuilder sb = new StringBuilder();
for(int i = daInvertire.length()-1; i>=0; i--)
{
sb.append(daInvertire.charAt(i));
}
return sb.toString();
}
/*public LinkedList<String> generaListaInvertita()
{
}*/
public static void main(String[] args)
{
GestioneStringhe gs = new GestioneStringhe();
gs.leggiStringhe();
System.out.println("Lista non ordinata:");
gs.stampaLista(); // <-- per come abbiamo definito il metodo, devi passare una lista
//contaScambi = 0;
gs.insertionSort();
//ols.Insertion_sort(null);
System.out.println("Lista ordinata:");
gs.stampaLista(null); // <-- per come abbiamo definito il metodo, devi passare una lista
//System.out.println("La lista e' stata ordinata con "+contaScambi+" scambi.");
gs.invertiStringa(null); // <-- non va usato qui
// gs.generaListaInvertita();
}
}
In particolare sono i seguenti:
1. a un cero punto c'è "listaDiStringhecasa"... ti è scappato quel casa?
2. non utilizzi correttamente il metodo stampaLista. Guarda la sua dichiarazione:
public static void stampaLista(LinkedList<String> listaDiStringhe)
Si aspetta che ti gli passi un oggetto di tipo LinkedList, mentre tu non gli passi niente oppure gli passi null. Invece gli devi fornire, come parametro, la lista che deve stampare.
Inoltre il metodo è di tipo static, quindi non lo devi richiamare sull'oggetto gs, ma proprio dalla classe GestioneStringhe.
3. Il metodo invertiStringa non lo devi usare nel main ma nel metodo generaListaInvertita che devi ancora scrivere. Questo perché devi invertire le stringhe solo quando generi la seconda lista...