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.

Il tuo web hosting come mai prima d'ora
  • 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);
	}
}
java

Il comando Java System.out.println fornisce questo risultato:

Il resto è: 3
java

Questa 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);
	}
}
java
Il resto è: 0,0
java

Sintassi 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
java

Nel 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);
	}
}
java

L’output è:

Il resto è: 3.0
java

Determinare 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.");
	}
}
java

Come previsto, otteniamo il seguente risultato:

11 è un numero dispari.
java

Resto 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);
	}
}
java

Poiché il dividendo è negativo, anche il resto sarà sempre negativo. Il risultato è:

Il resto è: -3
java

In 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);
	}
}
java

L’output sarà il seguente:

Il resto prima della modifica è: -3
Il resto dopo la modifica è: 1
java
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top