Operatore modulo di Java: funzionalità e vantaggi
Quando due numeri non sono divisibili fra loro, dividendoli si ottiene un resto. In Java, questa operazione viene effettuata dall’operatore modulo, che rappresenta una soluzione molto più affidabile rispetto alle alternative e viene utilizzato principalmente per determinare se i numeri sono pari o dispari.
L’operatore modulo di Java
Tutti i più comuni linguaggi di programmazione consentono di eseguire le quattro operazioni aritmetiche di base: addizione, sottrazione, moltiplicazione e divisione. È inoltre possibile, ad esempio, utilizzare gli appositi operatori Java per visualizzare e risolvere problemi aritmetici anche di ampia portata. Nell’ambito della programmazione, però, sono in particolare le divisioni a cui bisogna prestare attenzione. Infatti, dividendo due numeri interi, c’è il rischio di non ottenere come risultato un numero intero. Ad esempio, dividendo 11 per 4 si ottiene un resto di 3 (2 x 4 = 8, 11 - 8 = 3). Questo può creare dei problemi durante la programmazione.
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax
In Java esiste uno strumento, l’operatore modulo, che determina e restituisce il resto dopo aver diviso due numeri. È anche conosciuto in inglese come “remainder operator” (“operatore del resto”). Ci sono diverse situazioni in cui il suo utilizzo può tornare molto utile nella programmazione. Ad esempio, l’operatore modulo è in grado di determinare se un numero sarà pari o dispari, o se si tratta di un numero primo. Esistono anche altri modi per determinare il resto di una divisione, ma si tratta di strumenti decisamente più limitati. Te lo dimostriamo con il seguente esempio.
A cosa serve l’operatore modulo?
In poche parole, una divisione si ha quando un divisore si inserisce in un dividendo. Il risultato è il quoziente. Se il dividendo e il divisore sono entrambi memorizzati nel tipo di dato primitivo int (o Integer), puoi facilmente calcolare il resto senza ricorrere all’operatore modulo in Java. Il codice corrispondente dovrebbe somigliare a questo:
public class Main {
public static void main(String[] args) {
int dividendo = 11;
int divisore = 4;
int resto = dividendo - (divisore * (dividendo / divisore));
System.out.println("Il resto è: " + resto);
}
}
javaIl comando Java System.out.println
fornisce questo risultato:
Il resto è: 3
javaQuesta soluzione, sebbene un po’ macchinosa, in linea di principio è efficace. Tuttavia, la procedura diventa problematica non appena almeno uno degli operandi è di tipo float
o double
, cioè un tipo di dati in virgola mobile. In questo caso, per lo stesso calcolo si ottiene un risultato diverso:
public class Main {
public static void main(String[] args) {
int dividendo = 11;
double divisore = 4;
double resto = dividendo - (divisore * (dividendo / divisore));
System.out.println("Il resto è: " + resto);
}
}
javaIl resto è: 0,0
javaSintassi e funzionalità dell’operatore modulo di Java
L’operatore modulo di Java, invece, produce sempre il resto esatto. Pur eseguendo la divisione, non ne mostra il risultato, ma solo il resto che rimane alla fine. L’operatore viene indicato con il segno di percentuale %. La sua sintassi è la seguente:
Dividendo % Divisore
javaNel caso del nostro esempio, illustrato qui sopra, l’operatore modulo di Java funziona in questo modo:
public class Main {
public static void main(String[] args) {
int dividendo = 11;
double divisore = 4;
double resto = dividendo % divisore;
System.out.println("Il resto è: " + resto);
}
}
javaL’output è:
Il resto è: 3.0
javaDeterminare se i numeri sono pari o dispari
L’operatore modulo di Java permette di determinare se un numero è pari o dispari. Questo avviene secondo una logica piuttosto semplice: se si divide un qualsiasi dividendo per 2 e il resto è 0, il risultato è pari. In caso contrario, è per forza dispari. Questa ipotesi può essere illustrata attraverso un’istruzione if-else. Questo è il codice corrispondente:
public class Main {
public static void main(String[] args) {
int dividendo = 11;
if (dividendo % 2 == 0) {
System.out.println("Bei " + dividendo + " è un numero pari.");
}
else {
System.out.println("Il " + dividendo + " è un numero dispari.");
}
}
javaCome previsto, otteniamo il seguente risultato:
11 è un numero dispari.
javaResto con numeri negativi
In linea di principio, è ovviamente possibile determinare il resto anche se il dividendo o il divisore è negativo. Di seguito un semplice esempio:
public class Main {
public static void main(String[] args) {
int dividendo = -11;
int divisore = 4;
int resto = dividendo % divisore;
System.out.println("Il resto è: " + resto);
}
}
javaPoiché il dividendo è negativo, anche il resto sarà sempre negativo. Il risultato è:
Il resto è: -3
javaIn ogni caso, non sempre si desidera ottenere un risultato negativo. Per questo motivo, adattando un po’ il codice, è possibile ottenere un resto positivo. Per farlo, è necessario controllare innanzitutto che il resto sia inferiore a 0. In caso affermativo, si aggiunge il divisore per ottenere un resto positivo. Il codice per ottenere questo risultato è il seguente:
public class Main {
public static void main(String[] args) {
int dividendo = -11;
int divisore = 4;
int resto = dividendo % divisore;
System.out.println("Il resto della prima modifica è: " + resto);
while (dividendo < 0) dividendo += divisore;
int resto_positivo = dividendo % divisore;
System.out.println("Il resto dopo la modifica è: " + resto_positivo);
}
}
javaL’output sarà il seguente:
Il resto prima della modifica è: -3
Il resto dopo la modifica è: 1
java