Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Ordine lessicografico

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    Ordine lessicografico

    Salve,

    ho un array di elementi di tipo String. Li devo disporre in ordine lessicografico crescente. Su internet ho trovato due metodi statici: uno ausiliare (maggiore) e l'altro di ordinamento (bubbleSort).

    Ho creato una classe nominata BubbleSort avente i metodi statici: bubbleSort e maggiore;

    codice:
    public class BubbleSort()
    {
    
      public static boolean maggiore(String s1, String s2)    
          {
               
          }
    
      public static void bubbleSort(String[] a)
          {
            boolean finito = false, fattoscambio;
            int i = 0;
            int n = a.length;
            while(!finito)
            {
                i = i + 1;
                fattoscambio = false;
                for(int j = 0; j < n-i; j++)
                    if(maggiore(a[j], a[j+1]))
                    {
                        String temp = a[j];
                        a[j] = a[j+1];
                        a[j+1] = temp;
                        fattoscambio = true;
                    }
                if((!fattoscambio) || (i == n-1))
                    finito = true;
            }
          }
    }
    I metodi sono implementati correttamente perché li ho presi da internet e li ho controllati.
    Il problema si verifica nella classe test (main):

    codice:
    String[] array = lista.restituisciLista();
    BubbleSort.bubbleSort(array);
    l'errore si verifica quando invoco: BubbleSort.bubbleSort(array).
    L'eccezione che viene lanciata è: java.lang.NullPointerException
    Io so che questa eccezione viene lanciata quando c'è un riferimento nullo. Ma come è possibile ?.
    Ultima modifica di Bombonera; 10-02-2016 a 15:36

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,281
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    l'errore si verifica quando invoco: BubbleSort.bubbleSort(array).
    L'eccezione che viene lanciata è: java.lang.NullPointerException
    Io so che questa eccezione viene lanciata quando c'è un riferimento nullo. Ma come è possibile ?.
    Senza vedere qualcosa di più del codice ..... è abbastanza impossibile dirlo.

    Comunque la comparazione "lessicografica" tra due stringhe è già fornita da String, con i suoi compareTo / compareToIgnoreCase.

    Per il resto, se è un esercizio, è solo da vedere cosa ti è stato chiesto di implementare. Perché se devi implementare un algoritmo di ordinamento, allora è un conto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    va bene, provo con compareTo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    andBin se invece devo ordinare una lista di oggetti in ordine lessicografico devo utilizzare il Comparator ?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,281
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    andBin se invece devo ordinare una lista di oggetti in ordine lessicografico devo utilizzare il Comparator ?
    No, se ti basta l'ordine case-sensitive (ovvero il compareTo di Comparable in String)

    Un conto comunque, lo ripeto, è se devi implementare da zero (tipicamente per motivi "didattici") un algoritmo di ordinamento. Un altro conto è se devi ordinare liste/array potendo sfruttare i sort() del framework.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    No, se ti basta l'ordine case-sensitive (ovvero il compareTo di Comparable in String)

    Un conto comunque, lo ripeto, è se devi implementare da zero (tipicamente per motivi "didattici") un algoritmo di ordinamento. Un altro conto è se devi ordinare liste/array potendo sfruttare i sort() del framework.
    si posso utilizzare i sort(). Quindi in questo caso posso utilizzare Comparator, perché in realtà devo ordinare una lista di oggetti secondo l'ordinamento lessicografico.
    Solo che non so come implementare la cosa. Cosa mi consiglieresti ?
    Ti ringrazio.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Ho risolto. Ho utilizzato compareTo di Comparable.
    Grazie mille :-).

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,281
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    si posso utilizzare i sort(). Quindi in questo caso posso utilizzare Comparator, perché in realtà devo ordinare una lista di oggetti secondo l'ordinamento lessicografico.
    Solo che non so come implementare la cosa. Cosa mi consiglieresti ?
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Ho risolto. Ho utilizzato compareTo di Comparable.
    Se l'ordinamento di stringhe è case-sensitive:

    Arrays.sort(arrayDiStringhe);

    Se l'ordinamento di stringhe è case-insensitive:

    Arrays.sort(arrayDiStringhe, String.CASE_INSENSITIVE_ORDER);

    Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se l'ordinamento di stringhe è case-sensitive:

    Arrays.sort(arrayDiStringhe);

    Se l'ordinamento di stringhe è case-insensitive:

    Arrays.sort(arrayDiStringhe, String.CASE_INSENSITIVE_ORDER);

    Tutto qui.
    Incredibile questi argomenti non ci sono sul manuale che abbiamo e inoltre il prof non li ha mai spiegati.
    Bene grazie di tutto.

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.