Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-11-2009, 15:01   #1
miao84
Member
 
Iscritto dal: Oct 2009
Messaggi: 239
[JAVA] Generare sequenza in modo crescente

Avrei bisogno di una funzione che ogni volta che viene richiamata restituisca un numero crescente rispetto a quello che ha generato prima, di sei cifre. Ad esempio il primo numero sarà 000001 poi 000002 e cosi via..è possibile?
miao84 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2009, 08:58   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da miao84 Guarda i messaggi
Avrei bisogno di una funzione che ogni volta che viene richiamata restituisca un numero crescente rispetto a quello che ha generato prima, di sei cifre. Ad esempio il primo numero sarà 000001 poi 000002 e cosi via..è possibile?
Certo, puoi implementarti una classe che faccia quanto hai richiesto (in Java le "funzioni" non esitono, esistono i "metodi di istanza" e i "metodi di classe" quindi è implicato l'uso delle classi).

Un esempio:
Codice:
public class AutoCounter
{
    private int counter;
    private final int maxCounter;
    private final int maxDigit;

    public AutoCounter(int max) {
        maxCounter = max;
        maxDigit = countDigit(max);
        counter = 1;
    }

    // restituisce il numero di cifre che formano il numero intero in base
    // 10 passato come argometo
    private int countDigit(int number) {
        String s = Integer.toString(number);
        return s.length();
    }

    // restituisce tutte le maxDigit cifre del numero corrente e ne incrementa il valore
    public String getNext() {
        int value = counter;
        incrementCounter();
        return doCustomFormatting(value);
    }

    private void incrementCounter() {
        if (counter < maxCounter) {
            counter++;
        }
//        else {
//            String msg = "Impossibile incrementare il contatore oltre il valore massimo";
//            throw new RuntimeException(msg);
//        }
    }

    // formatta il numero passato in ingresso in una stringa in modo che sia sempre
    // formata dallo stesso numero di cifre di maxCounter.
    // Esempio: con maxCounter = 999999 (6 cifre) e value = 13;
    // la stringa restituita deve essere "000013".
    private String doCustomFormatting(int value) {
        int valueDigit = countDigit(value);
        int leadingZeroes = maxDigit - valueDigit;
        String s = zeroesString(leadingZeroes) + String.valueOf(value);
        return s;
    }
    
    // restituisce una stringa formata da tanti zero quanti
    // indicati da leadingZeroes
    private String zeroesString(int leadingZeroes) {
        StringBuilder sb = new StringBuilder();
        while(leadingZeroes > 0) {
            sb.append("0");
            leadingZeroes--;
        }
        return sb.toString();
    }


    // Esempio d'uso:
    public static void main(String... args) {
        //AutoCounter counter = new AutoCounter(999999);
        AutoCounter counter = new AutoCounter(20);
        for (int i=0; i<30; i++) {
            System.out.println(counter.getNext());
        }
    }
}
In questo esempio, nel caso in cui venga "sforato" il limite impostato per il contatore il contatore stesso non viene più incrementato ma restituisce sempre il valore massimo; un'alternativa può essere quella di lanciare un'eccezione (parte commentata nel codice).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 02-11-2009 alle 09:55.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
Firmato e notarizzato da Apple, CrashSte...
Meta Hyperion: gli investimenti raggiung...
Robot aspirapolvere ECOVACS X9 PRO OMNI ...
Il nuovo GTA potrebbe avere un effetto c...
Apple rilascia le beta pubbliche di iOS ...
Firefox cambia passo: update ogni due se...
Vent'anni di autopsie in un clic: nasce ...
Euro digitale, la BCE accelera: 36 partn...
Cowork, ChatGPT Work e ora Sand: Cursor ...
WhatsApp testa un cloud tutto suo per i ...
Un tassello dell'origine della vita scop...
Galaxy S26 Ultra, macchie rosse sullo sc...
HUAWEI FreeClip 2S: miglior qualit&agrav...
Bun, IA ovunque e riscrittura in Rust: i...
Una startup cinese va oltre i nanometri,...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v