# Πώς να χρησιμοποιήσετε τον τελεστή modulo της Java

Όταν η διαίρεση δεν λειτουργεί τέλεια, μένει ένα υπόλοιπο. Ο τελεστής modulo της Java υπάρχει για να το λάβει υπόψη στον κώδικά σας. Ο τελεστής είναι σημαντικά πιο αξιόπιστος από άλλες λύσεις και χρησιμοποιείται κυρίως για να προσδιορίσει αν οι αριθμοί είναι ζυγοί ή μονόι.

## Τι είναι ο τελεστής modulo της Java;

Σε όλες τις κοινές γλώσσες προγραμματισμού, μπορείτε να εκτελέσετε τις βασικές αριθμητικές πράξεις της πρόσθεσης, της αφαίρεσης, του πολλαπλασιασμού και της διαίρεσης. Μπορείτε επίσης να χρησιμοποιήσετε τους τελεστές Java για να εμφανίσετε και να λύσετε σύνθετους υπολογισμούς. Όσον αφορά ειδικότερα τη διαίρεση, υπάρχει πάντα ο κίνδυνος να **προκύψει υπόλοιπο**. Για παράδειγμα, αν διαιρέσετε το 11 με το 4, θα έχετε υπόλοιπο 3 (*2 x 4 = 8, 11 - 8 = 3*). Αυτό μπορεί να οδηγήσει σε προβλήματα στον προγραμματισμό.

Γι’ αυτό υπάρχει ο τελεστής modulo της Java. Είναι επίσης γνωστός ως τελεστής υπολοίπου, καθώς προσδιορίζει και επιστρέφει το **υπόλοιπο μετά τη διαίρεση δύο αριθμών**. Υπάρχουν διάφορες περιπτώσεις στις οποίες είναι εξαιρετικά σημαντικός. Ο τελεστής μπορεί να χρησιμοποιηθεί, για παράδειγμα, για να διαπιστωθεί αν ένας αριθμός είναι ζυγός ή μονός ή αν ένας αριθμός είναι πρώτος. Αν και υπάρχουν και άλλοι τρόποι για να προσδιοριστεί το υπόλοιπο, αυτοί φτάνουν γρήγορα στα όριά τους. Το παρακάτω παράδειγμα θα το καταδείξει.

## Σε τι χρησιμοποιείται ο τελεστής υπολοίπου;

Με απλά λόγια, η διαίρεση περιλαμβάνει τον έλεγχο του πόσες φορές ένας διαιρέτης χωράει σε ένα διαιρούμενο. Το αποτέλεσμα είναι το πηλίκο. Εάν το διαιρούμενο και ο διαιρέτης είναι και τα δύο αποθηκευμένα στον [πρωτόγονο τύπο δεδομένων Java](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/protogeneis-typoi-java/) int (ή ακέραιος αριθμός), το υπόλοιπο μπορεί εύκολα να εκφραστεί χωρίς το Java modulo. Ο κώδικας θα έχει την ακόλουθη μορφή:

```java
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 `System.out.println` για να δούμε το αποτέλεσμα:

```java
The remainder is: 3
```

Αυτή η επιλογή είναι λίγο δυσκίνητη, αλλά θεωρητικά είναι εφικτή. Ωστόσο, θα αντιμετωπίσουμε προβλήματα μόλις τουλάχιστον ένας από τους τελεστές είναι float ή double, δηλαδή ένας τύπος δεδομένων με κινητή υποδιαστολή. Σε αυτή την περίπτωση, ο ίδιος υπολογισμός θα μας δώσει διαφορετικό αποτέλεσμα:

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

## Ποια είναι η σύνταξη του modulo στη Java;

Ο τελεστής modulo της Java, από την άλλη πλευρά, θα επιστρέφει πάντα το **ακριβές υπόλοιπο**. Εκτελεί διαίρεση, αλλά εμφανίζει μόνο το υπόλοιπο, όχι το πηλίκο. Αρχικοποιείται με ένα σύμβολο ποσοστού, που σημαίνει ότι η σύνταξή του έχει την ακόλουθη μορφή:

```java
Dividend % Divisor
```

Το Java modulo θα είχε την ακόλουθη μορφή όταν χρησιμοποιείται στο παραπάνω παράδειγμα:

```java
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
The remainder is: 3.0
```

## Πώς να προσδιορίσετε αν ένας αριθμός είναι μονός ή ζυγός

Το Java modulo μπορεί να χρησιμοποιηθεί για να διαπιστωθεί αν ένας αριθμός είναι ζυγός ή μονός. Αυτό προκύπτει από μια απλή λογική: αν διαιρέσετε οποιονδήποτε αριθμό με το 2 και το υπόλοιπο είναι 0, τότε είναι ζυγός. Διαφορετικά, είναι μονός. Θα το δείξουμε αυτό με μια **δήλωση if-else**.

```java
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
11 is an odd number.
```

## Πώς να προσδιορίσετε το υπόλοιπο ενός αρνητικού αριθμού

Μπορείτε επίσης να χρησιμοποιήσετε το Java modulo για να λάβετε το υπόλοιπο όταν ο διαιρούμενος ή ο διαιρέτης είναι αρνητικός. Ακολουθεί ένα απλό παράδειγμα:

```java
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
The remainder is: -3
```

Αλλά μπορεί να μην θέλετε πάντα να έχετε αρνητικό αποτέλεσμα. Αν θέλετε να **επιστρέψετε ένα θετικό υπόλοιπο**, μπορείτε να τροποποιήσετε λίγο τον κώδικα. Πρώτα ελέγξτε αν το υπόλοιπο είναι μικρότερο από 0. Αν ναι, προσθέστε τον διαιρέτη και θα πάρετε το θετικό υπόλοιπο. Ο κώδικας θα έχει την εξής μορφή:

```java
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
The remainder before is: -3
The remainder after is: 1
```


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/monolithos-java/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/monolithos-java/) for AI/LLM consumption.