Soluzione 7.6

Ecco una possibile soluzione. Il metodo bubbleSort necessita di due cicli annidati. Si noti che elabora dati di tipo Comparable e non solo stringhe.
Prestare attenzione anche alla realizzazione del metodo readStringArray ed alla condizione di terminazione dell'input.
import java.util.Scanner;

public class BubbleSortTester
{
    public static void main(String[] args)
    {
        System.out.println(
                  "Inserisci numeri double (Enter e < CTRL >+d per concludere)");
        String[] v = readStringArray();
        bubbleSort(v);
        System.out.println("\nStringhe ordinate con bubbleSort:");
        for (int i = 0; i < v.length; i++)
            System.out.println(v[i]);
    }

    private static String[] readStringArray()
    {
        Scanner in = new Scanner(System.in);
        String[] v = new String[1];
        int vSize = 0;
        while (in.hasNextLine())
        {
            String line = in.nextLine();
            Scanner linescan = new Scanner(line);
            while (linescan.hasNext())
            {
                if (vSize == v.length)
                    v = resize(v, vSize*2);
                v[vSize++] = linescan.next();
            }
        }
        if (vSize != v.length)    // Quest'ultimo resize ci serve ad ottenere
            v = resize(v, vSize); // un array pieno, perche` abbiamo deciso di
        return v;                 // non usare array riempiti solo in parte
    }
    private static String[] resize(String[] v, int newLength)
    {
        String[] a = new String[newLength];
        if (newLength > v.length)
            System.arraycopy(v, 0, a, 0, v.length);
        else
            System.arraycopy(v, 0, a, 0, newLength);
        return a;
    }

    public static void bubbleSort(Comparable[] v)
    {
        if (v == null) return;
        for (int i = 0; i < v.length-1; i++)     //attenzione alla formulazione 
            for (int j = v.length-1; j > i; j--) //di questi due cicli
                if (v[j].compareTo(v[j-1]) < 0)
                    swap(v, j, j-1);
    }

    private static void swap(Object[] v, int i, int j)
    {
        Object obj = v[i];
        v[i] = v[j];
        v[j] = obj;
    }
}