Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Generazione casuale stringhe

    Vorrei sapere come si fa a generare stringhe casuali di lettere e numeri
    Fno ad ora ho utilizzato solo la funzione random per solo i numeri ma ora devo generare una stringa simile a questaq:
    43dc55bdc7a72f33e8e7b1a9fa34dd65

    C'è qualche metodo?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    puoi generare un numero random compreso tra 0 e 36 e convertirlo a char da '0' a 'z'

  3. #3
    ma nn c'è un metodo che prende in input la lunghezza e in output restituisce la stringa random?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da romaluca
    ma nn c'è un metodo che prende in input la lunghezza e in output restituisce la stringa random?
    beh ... te lo devi fare tu, proprio perché le specifiche della stringa sono particolari!
    Comunque verrebbe fuori un metodo di circa una decina di righe!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Eccoti accontentato, pero' il metodo consente anche le maiuscole,
    come esercizio eliminale

    codice:
    public class NewMain{
        
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
           
           System.out.println(randomString(6));
            
        }
        public static String randomString(int length){
            Random rand = new Random();
            StringBuffer tempStr = new StringBuffer();
            tempStr.append("");
            for (int i = 0; i < length; i++) {
                int  c = rand.nextInt(122 - 48) + 48;
                if((c >= 58 &&  c <= 64) || (c >= 91 && c <= 96)){
                    i--;
                    continue;
                }
                tempStr.append((char)c);
                
            }
            return tempStr.toString();
        }
        
        
    }
    Nulla, ma e' sempre qualcosa.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ecco una versione abbastanza compatta:
    codice:
    public static String randomString (int length) {
        Random rnd = new Random ();
        char[] arr = new char[length];
    
        for (int i=0; i<length; i++) {
            int n = rnd.nextInt (36);
            arr[i] = (char) (n < 10 ? '0'+n : 'a'+n-10);
        }
    
        return new String (arr);
    }
    L'unica cosa che non mi è chiara è se il range delle lettere deve essere a-f (come nella numerazione esadecimale) oppure a-z. Purtroppo questo non si riesce a capire bene dal post iniziale di romaluca, sebbene nel suo esempio abbia usato solo lettere a-f.

    Se il range delle lettere deve essere a-f basta mettere 16 invece di 36.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Grazie mille
    cmq il range è a-z oltre a 0-9

  8. #8
    Programmare e' davvero un rompi capo, caspita una cosa la puoi fare in
    decine di modi diversi!!
    Nulla, ma e' sempre qualcosa.

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.