Sådan bruges Java-modulo-operatoren
Når division ikke fungerer perfekt, får du en rest. Java-modulo-operatoren er der for at tage højde for dette i din kode. Operatoren er betydeligt mere pålidelig end andre løsninger og bruges primært til at bestemme, om tal er lige eller ulige.
Hvad er Java-modulo-operatoren?
I alle almindelige programmeringssprog kan du udføre de grundlæggende aritmetiske operationer addition, subtraktion, multiplikation og division. Du kan også bruge Java-operatorer til at vise og løse komplekse beregninger. Når det gælder division, er der altid risiko for, at der er en rest. Hvis du for eksempel dividerer 11 med 4, får du en rest på 3 (2 x 4 = 8, 11 - 8 = 3). Dette kan føre til problemer i programmeringen.
Det er det, Java-modulo-operatoren er til for. Den kaldes også restoperatoren, da den bestemmer og returnerer resten, når to tal divideres. Der er forskellige situationer, hvor den er ekstremt vigtig. Operatoren kan f.eks. bruges til at finde ud af, om et tal er lige eller ulige, eller om et tal er et primtal. Der findes også andre måder at bestemme resten på, men de når hurtigt deres grænser. Det følgende eksempel illustrerer dette.
Hvad bruges restoperatøren til?
Enkelt sagt indebærer division at kontrollere, hvor mange gange en divider passer ind i et dividende. Resultatet er kvotienten. Hvis dividende og divider begge er gemt i den primitive Java-datatype int (eller heltal), kan resten let udtrykkes uden Java modulo. Koden vil se således ud:
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);
}
}javaVi kan derefter bruge Java-kommandoen System.out.println til at se resultatet:
The remainder is: 3javaDenne mulighed er lidt besværlig, men er i teorien mulig. Vi vil dog støde på problemer, så snart mindst én af operanderne er en float eller double, det vil sige en flydende tal-datatype. I dette tilfælde vil den samme beregning give os et andet 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);
}
}javaThe remainder is: 0.0javaHvad er syntaksen for modulo i Java?
Java-modulo-operatoren returnerer derimod altid den nøjagtige rest. Den udfører division, men viser kun resten, ikke kvotienten. Den initialiseres med et procenttegn, hvilket betyder, at dens syntaks ser således ud:
Dividend % DivisorjavaJava modulo ville se således ud, når det bruges i ovenstående eksempel:
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);
}
}javaResultatet er derefter:
The remainder is: 3.0javaHvordan man afgør, om et tal er ulige eller lige
Java modulo kan bruges til at finde ud af, om et tal er lige eller ulige. Det følger af simpel logik: Hvis du deler et tal med 2 og resten er 0, er det lige. Ellers er det ulige. Vi illustrerer dette med en if-else-sætning.
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.");
}
}
}javaSom forventet får vi følgende resultat:
11 is an odd number.javaSådan bestemmes resten af et negativt tal
Du kan også bruge Java modulo til at få resten, når dividenden eller divisoren er negativ. Her er et simpelt eksempel:
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);
}
}javaDa udbyttet er negativt, er restbeløbet også negativt:
The remainder is: -3javaMen du ønsker måske ikke altid at få et negativt resultat. Hvis du vil returnere en positiv rest, kan du ændre koden lidt. Kontroller først, om resten er mindre end 0. Hvis det er tilfældet, skal du tilføje divisoren, og så får du den positive rest. Sådan ser koden ud:
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);
}
}javaVi får følgende output:
The remainder before is: -3
The remainder after is: 1java