När divisionen inte fungerar perfekt blir det en rest. Java-modulo-operatorn finns till för att ta hänsyn till detta i din kod. Operatören är betydligt mer tillförlitlig än andra lösningar och används främst för att avgöra om tal är jämna eller udda.

Vad är Java-modulo-operatorn?

I alla vanliga programmeringsspråk kan du utföra de grundläggande aritmetiska operationerna addition, subtraktion, multiplikation och division. Du kan också använda Java-operatorer för att visa och lösa komplexa beräkningar. När det gäller division finns det alltid en risk att det blir en rest. Om du till exempel delar 11 med 4 får du en rest på 3 (2 x 4 = 8, 11 - 8 = 3). Detta kan leda till problem vid programmering.

Det är vad Java-modulo-operatorn är till för. Den kallas också restoperatorn, eftersom den bestämmer och returnerar resten efter att två tal har dividerats. Det finns olika situationer där den är extremt viktig. Operatören kan till exempel användas för att ta reda på om ett tal är jämnt eller udda eller om ett tal är ett primtal. Det finns också andra sätt att bestämma resten, men de når snabbt sina gränser. Följande exempel illustrerar detta.

Vad används restoperatorn till?

Enkelt uttryckt innebär division att man kontrollerar hur många gånger en divisor passar in i en dividend. Resultatet är kvoten. Om både dividenden och divisorn lagras i den primitiva Java-datatypen int (eller heltal) kan resten enkelt uttryckas utan Java-modulo. Koden skulle se ut så här:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	int divisor = 4;
	int remainder = dividend - (divisor * (dividend / divisor));
	System.out.println("The remainder is: " + remainder);
	}
}
java

Vi kan sedan använda Java-kommandot System.out.println för att visa resultatet:

The remainder is: 3
java

Det här alternativet är lite krångligt, men i teorin är det möjligt. Men vi stöter på problem så fort minst en av operanderna är en float eller double, det vill säga en flytande datatyp. I det här fallet ger samma beräkning ett annat resultat:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	double divisor = 4;
	double remainder = dividend - (divisor * (dividend / divisor));
	System.out.println("The remainder is: " + remainder);
	}
}
java
The remainder is: 0.0
java

Vad är syntaxen för modulo i Java?

Java-modulo-operatorn å andra sidan returnerar alltid den exakta resten. Den utför division men visar endast resten, inte kvoten. Den initialiseras med ett procenttecken, vilket innebär att dess syntax ser ut som följer:

Dividend % Divisor
java

Java-modulo skulle se ut som följer när det används i exemplet ovan:

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	double divisor = 4;
	double remainder = dividend % divisor;
	System.out.println("The remainder is: " + remainder);
	}
}
java

Resultatet blir då:

The remainder is: 3.0
java

Hur man avgör om ett tal är udda eller jämnt

Java modulo kan användas för att ta reda på om ett tal är jämnt eller udda. Det följer av enkel logik: Om du delar ett tal med 2 och resten är 0, är det jämnt. Annars är det udda. Vi illustrerar detta med ett if-else-uttryck.

public class Main {
	public static void main(String[] args) {
	int dividend = 11;
	if (dividend % 2 == 0) {
	System.out.println(dividend + " is an even number.");
	}
	else {
	System.out.println(dividend + " is an odd number.");
	}
	}
}
java

Som förväntat får vi följande resultat:

11 is an odd number.
java

Hur man beräknar resten av ett negativt tal

Du kan också använda Java modulo för att få resten när dividenden eller divisorn är negativ. Här är ett enkelt exempel:

public class Main {
	public static void main(String[] args) {
	int dividend = -11;
	int divisor = 4;
	int remainder = dividend % divisor;
	System.out.println("The remainder is: " + remainder);
	}
}
java

Eftersom utdelningen är negativ är även resten negativ:

The remainder is: -3
java

Men du kanske inte alltid vill få ett negativt resultat. Om du vill returnera en positiv rest kan du ändra koden lite. Kontrollera först om resten är mindre än 0. Om så är fallet, lägg till delaren så får du den positiva resten. Så här ser koden ut:

public class Main {
	public static void main(String[] args) {
	int dividend = -11;
	int divisor = 4;
	int remainder = dividend % divisor;
	System.out.println("The remainder before is: " + remainder);
	while (dividend < 0) dividend += divisor;
	int positive_remainder = dividend % divisor;
	System.out.println("The remainder after is: " + positive_remainder);
	}
}
java

Vi får följande utdata:

The remainder before is: -3
The remainder after is: 1
java
Gå till huvudmeny