Avec des exercices corrigés en Java, vous pratiquerez divers concepts du langage de programmation Java. Vous commencerez par des exercices Java de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrivez un programme Java qui inverse une chaîne de caractères.
public class Main {
public static void main(String[] args) {
String str = "WayToLearnX";
String res = "";
// Parcourir chaque caractère de la chaîne str en commençant
// par le dernier caractère
for (int i = str.length() -1; i >= 0; i--) {
// Concaténer chaque caractère à la chaîne inversée
res += str.charAt(i);
}
// Afficher les chaînes de caractères originales et inversées
System.out.println("Chaîne originale: " + str);
System.out.println("Chaîne inversée: " + res);
}
}
L’approche pour inverser une chaîne à l’aide d’une boucle for consiste à parcourir les caractères de la chaîne originale dans l’ordre inverse et à construire une nouvelle chaîne. La boucle for commencera à partir du dernier caractère de la chaîne entrée (str) et ajoutera chaque caractère à la nouvelle chaîne (res).
Dans le programme ci-dessus, nous déclarons une variable (str) et l’initialisons avec la chaîne que nous devons inverser, c’est-à-dire « WayToLearnX ». Nous déclarons également une variable (res) et lui assignons une chaîne vide. Ensuite, nous utilisons une boucle for pour parcourir les caractères de la chaîne d’entrée (str) dans l’ordre inverse. La boucle commence à partir de str.Length() - 1 (l’index du dernier caractère) et se poursuit jusqu’à ce que l’index atteigne zéro. À l’intérieur de la boucle, nous concaténons chaque caractère à la chaîne inversée à l’aide de l’opérateur +=. Enfin, nous affichons les chaînes originales et inversées sur la console.
Écrivez un programme Java qui renvoie le plus grand entier dans un tableau.
Exemple:
tab: [1, 2, 9, 4]
Le plus grand élément présent dans le tableau est: 9
Solution:
public class Main {
public static void main(String[] args) {
// Initialiser le tableau
int [] tab = new int [] {1, 2, 9, 4};
// Initialiser max avec le premier élément du tableau.
int max = tab[0];
// Parcourir le tableau en boucle
for (int i = 0; i < tab.length; i++) {
// Comparer les éléments du tableau avec le maximum
if(tab[i] > max)
max = tab[i];
}
System.out.println("Le plus grand élément présent dans le tableau est: " + max);
}
}
Sortie:
Le plus grand élément présent dans le tableau est: 9
Explication:
Dans ce programme, nous devons trouver le plus grand élément présent dans le tableau et l’afficher. Pour ce faire, il faut parcourir le tableau du début à la fin en comparant max à tous les éléments d’un tableau. Si l’un des éléments est supérieur à max, la valeur de l’élément est stockée dans max. Initialement, max contiendra la valeur du premier élément. À la fin de la boucle, max représente le plus grand élément du tableau. Voir aussi la méthode intégrée max() en Java.
Exercice 3:
Écrivez un programme Java pour afficher la valeur ascii d’un caractère donné.
Exemple:
La valeur ASCII de A est: 65
Solution:
public class Main {
public static void main(String[] args) {
// Définir une variable de type int 'chr' et lui attribuer
// la valeur ASCII 'A'.
int chr = 'A';
// Afficher la valeur ASCII de 'A' sur la console.
System.out.println("La valeur ASCII de A est: "+chr);
}
}
Sortie:
La valeur ASCII de A est: 65
Explication:
Note: la variable ‘chr’ se verra attribuer la valeur ASCII du caractère ‘A’ qui est 65. Si nous affectons directement une variable char à int, elle renverra la valeur ASCII d’un caractère donné.
Écrivez un programme Java pour trouver la taille d’un fichier spécifié.
Exemple de sortie:
file1.txt : 38 octets
file2.txt : 78 octets
Solution:
import java.io.File;
public class Main {
public static void main(String[] String) {
// Récupérer la taille des fichiers.
long size1 = new File("file1.txt").length();
long size2 = new File("file2.txt").length();
// Afficher la taille des fichiers en octets pour les deux
// fichiers.
System.out.println("file1.txt : "+ size1 +" octets");
System.out.println("file2.txt : "+ size2 +" octets");
}
}
Écrivez un programme Java pour afficher l’heure et la date actuelle dans un format spécifique « yyyy/MM/dd HH:mm:ss ».
Exemple de sortie:
2020/04/12 09:40:44
SimpleDateFormat est une classe concrète pour le formatage et l’analyse des dates d’une manière sensible aux paramètres régionaux.
La méthode getInstance() de la classe Calendar est utilisée pour obtenir un calendrier en utilisant le fuseau horaire et les paramètres régionaux actuels du système.
Solution:
public class Main {
public static void main(String[] String) {
SimpleDateFormat s = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
s.setCalendar(Calendar.getInstance(TimeZone.getTimeZone("GMT")));
System.out.println(s.format(System.currentTimeMillis()));
}
}
Sortie:
2020/04/12 09:40:44
Exercice 7: PGCD
Le PGCD ou le Plus Grand Commun Diviseur de deux entiers est le plus grand entier pouvant diviser exactement deux nombres (sans reste). Écrivez un programme Java qui renvoie le PGCD de x et y.
Exemple de sortie:
Le PGCD de 12 et 8 est: 4
Solution:
public class Main {
public static void main(String[] args) {
// x et y sont les nombres pour trouver la PGCD
int x = 12, y = 8, pgcd = 1;
// Démarrer la boucle de 1 au plus petit des deux nombres
for(int i = 1; i <= x && i <= y; i++)
{
// retourne true si les deux conditions sont remplies
if(x%i==0 && y%i==0)
//stocker la variable i dans la variable pgcd
pgcd = i;
}
// Afficher le PGCD
System.out.printf("Le PGCD de %d et %d est: %d", x, y, pgcd);
}
}
Sortie:
Le PGCD de 12 et 8 est: 4
Explication:
Dans le programme suivant, nous avons initialisé deux nombres x=12 et y=8. Ensuite, nous avons utilisé une boucle for qui va de 1 au plus petit des deux nombres.
Elle s’exécute jusqu’à ce que la condition i <= x && i <= y devienne vraie. À l’intérieur de la boucle for, nous avons également utilisé une instruction if qui teste la condition (x%i==0 && y%i==0) et renvoie un résultat positif si les deux conditions sont remplies. Enfin, nous avons stocké la valeur de i dans la variable pgcd et affiché la même variable pgcd.
Un nombre premier est un nombre naturel supérieur à 1 qui n’a pas de diviseurs positifs que 1 et lui même. Écrivez un programme Java qui vérifie si un nombre est un nombre premier.
Exemple de sortie:
2 est un nombre premier.
Solution:
public class Main {
public static void main(String[] args) {
int i, flag=0;
// C'est le nombre à vérifier
int n=2;
// 0 et 1 ne sont pas des nombres premiers
if(n==0||n==1){
System.out.println(n+" n'est pas un nombre premier");
}else{
for(i=2; i<=n/2; i++){
// Condition pour les nombres non premiers
if(n%i==0){
System.out.println(n+" n'est pas un nombre premier");
flag=1;
break;
}
}
if(flag==0) {
System.out.println(n+" est un nombre premier.");
}
}
}
}
Sortie:
2 est un nombre premier.
Explication:
Dans le programme ci-dessus, la boucle for est utilisée pour déterminer si le nombre ‘n’ donné est premier ou non.
Notez que nous parcourons la boucle de 2 à n/2. Cela s’explique par le fait qu’un nombre n’est pas divisible par plus de sa moitié.
À l’intérieur de la boucle for, nous vérifions si le nombre est divisible par un nombre quelconque dans l’intervalle donné (2…n/2).
Si ‘n’ est divisible, le flag prend la valeur true(1) et nous sortons de la boucle. Cela permet de déterminer que ‘n’ n’est pas un nombre premier.
Si ‘n’ n’est divisible par aucun nombre, flag vaut false(0) et ‘n’ est un nombre premier.
Un palindrome est un mot qui s’écrit de la même manière après l’inversion de ce dernier. ‘ada’ est un palindrome. Écrivez un programme Java qui vérifie si une chaîne est un palindrome. Utilisez la méthode str.charAt(i) pour récupérer le caractère à la position i.
Exemple de sortie:
'ada' est une chaîne palindrome.
Solution:
public class Main {
public static void main(String[] args) {
// Il s'agit de la variable à vérifier pour le palindrome
// et la variable reverse pour stocker l'inverse de str
String str = "ada", reverse = "";
int len = str.length();
for (int i = (len - 1); i >=0; --i) {
reverse = reverse + str.charAt(i);
}
if (str.toLowerCase().equals(reverse.toLowerCase())) {
System.out.println(str + " est une chaîne palindrome.");
}
else {
System.out.println(str + " n'est pas une chaîne palindrome.");
}
}
}
Sortie:
ada est une chaîne palindrome.
Explication:
Dans l’exemple ci-dessus, nous avons une chaîne de caractères « ada » stockée dans « str ». Ici, nous avons utilisé:
La boucle for pour inverser la chaîne de caractères
La boucle va de la fin au début de la chaîne.
La méthode charAt() accède à chaque caractère de la chaîne.
Chaque caractère de la chaîne est accédé dans l’ordre inverse et stocké dans ‘reverse’.
Instruction if pour comparer ‘str’ et ‘reverse’
La méthode toLowerCase() convertit à la fois ‘str’ et ‘reverse’ en minuscules. En effet, Java est sensible à la casse et « a » et « A » sont deux valeurs différentes.
La méthode equals() vérifie si deux chaînes sont égales.