Exercice Java Corrigé pour Débutant | Partie 2

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.

Exemple de sortie:

Chaîne originale: WayToLearnX
Chaîne inversée: XnraeLoTyaW
Solution:

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

Sortie:

Chaîne originale: WayToLearnX
Chaîne inversée: XnraeLoTyaW

Explication:

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.

Voir aussi, les méthodes: charAt(), et length() en Java.

 

Exercice 2:

É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é.

Voir aussi : Comment récupérer le code ASCII d’un caractère en Java

 

Exercice 4:

É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");
    }
}

Sortie:

Voir aussi : Comment récupérer la taille d’un fichier en Java

 

Exercice 5:

Écrivez un programme Java pour afficher l’heure du système.

Exemple de sortie:

La date du systéme est: Sun Apr 12 09:28:02 UTC 2020
La méthode System.currentTimeMillis() récupère la date et l’heure actuelle du système.
Solution:

public class Main {
 public static void main(String[] String) {	
     System.out.format("La date du systéme est: %tc", 
                       System.currentTimeMillis());
 }
}

Sortie:

La date du systéme est: Sun Apr 12 09:28:02 UTC 2020
 

Exercice 6:

É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.

Voir aussi: Comment calculer le PGCD de deux nombres en Java

 

Exercice 8: Nombre premier

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.

Voir aussi: Comment vérifier si un nombre est premier en Java.

 

Exercice 9: Vérifier si une chaine est Palindrome

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.

Voir aussi: Comment vérifier si un nombre est un palindrome en Java.

 

Éditeur de code Java: Testez votre code en ligne!


QCM-Java

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *