Classe JAVA per generare codici random
Ultimamente mi sono imbattuto in una nova sfida chiamata “Impara a programmare in JAVA che ti serve per lavoro”… Una delle necessità che ho avuto per portare avanti un progetto già avviato è stata quella di dover creare delle stringhe casuali da inserire in un url di controllo.
Sono sicuro che in giro ce ne saranno di migliori, ma funziona, e per essere la mia prima Classe JAVA sono abbastanza soddisfatto 🙂
Il codice:
import java.util.Random; public class GeneraCodiceRandom { // array delle lettere private String[] Caratteri = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "z", "y", "j", "k", "x", "w", "A", "B", "C", "D", "E", "F", "G", "H", "I", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "Z", "Y", "J", "K", "X", "W", "à", "è", "é", "ì", "ò", "ù" }; // array dei numeri private String[] Numeri = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }; // array dei caratteri speciali private String[] Speciali = { "!", "£", "$", "%", "&", "@", "*", ",", "_", "-", "#", ";", "^", "\", "/", ":", ".", "+", "§", "?", "ç" }; // creo l'oggetto random private Random rand = new Random(); public String GeneraCodice(int numeroCaratteriRandom, boolean conSpeciali, boolean conTimestamp, String separatore) { // ottengo la lunghezza di ogni array int lunghezzaCaratteri = Caratteri.length; int lunghezzaNumeri = Numeri.length; int lunghezzaSpeciali = Speciali.length; // istanzio la variabile che conterrà il prodotto finale String stringaRandom = ""; while (stringaRandom.length() < numeroCaratteriRandom) { // ottengo un elemento casuale per ogni array int c = rand.nextInt(lunghezzaCaratteri); int n = rand.nextInt(lunghezzaNumeri); int s = rand.nextInt(lunghezzaSpeciali); // aggiungo una lettera casuale stringaRandom += Caratteri[c]; // aggiungo un numero random stringaRandom += Numeri[n]; // se l'opzione conSpeciali è true aggiungo un carattere speciale if (conSpeciali) { stringaRandom += Speciali[s]; } } // se la stringa generata dovesse superare il numero di caratteri // richiesto, la taglio. if (stringaRandom.length() > numeroCaratteriRandom) { stringaRandom = stringaRandom.substring(0, numeroCaratteriRandom); } // se abbiamo deciso di mettere il timestamp if (conTimestamp) { // recupero il timestamp long timestamp = System.currentTimeMillis(); stringaRandom += separatore + timestamp; } // restituisco la stringa generata return stringaRandom; } // metodo main come esempio public static void main(String[] args) { // creo un oggetto GeneraCodiceRandom e lo chiamo codice GeneraCodiceRandom codice = new GeneraCodiceRandom(); // creo 10 stringhe random come esempio for (int i = 1; i <= 10; i++) { /* * parametri: numeroCaratteriRandom = il numero di caratteri random * da generare; conSpeciali = true/flase per specificare se vogliamo * includere dei caratteri speciali; conTimestamp = true/false per * specificare se vogliamo includere un timestamp; separatore = un * carattere da utilizzare per dividere la stringa random dal * timestamp. Se non si vuole utilizzare nessun separatore basta * impostarlo uguale ad una stringa vuota = "" */ /* * Ad ogni ciclo del "for", richiamo il metodo GeneraCodice * dell'oggetto "codice", e gli passo il numerico progressivo di * caratteri random da generare. */ String generato = codice.GeneraCodice(i, true, true, "||"); // output della stringa appena creata. System.out.println("[" + i + "]\t" + generato); } } }
How to:
//creo l'istanza della classe GeneraCodiceRandom mioGeneratore = new GeneraCodiceRandom(); //sfrutto il metodo GeneraCodice per creare un codice e lo assegno //alla variabile "codiceGenerato" String codiceGenerato = mioGeneratore.GeneraCodice(i, true, true, "||"); //scrivo la variabile "codiceGenerato" in console System.out.println(codiceGenerato);
Spero possa essere utile a qualcuno.
Alla prossima…
Commentati Recentemente