|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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?
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
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());
}
}
}
__________________
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 10:55. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:57.




















