Exercice Java Corrigé pour Débutant | Partie 9

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:

Écrire un programme Java pour déterminer si le nombre de 10 dans un tableau d’entiers est supérieur au nombre de valeur de 20.

Exemple:

Tab: [10, 10, 10, 15, 50, 60, 20]
true
Solution:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int[] tab = {10, 10, 10, 15, 50, 60, 20};
        System.out.println("Tab: "+Arrays.toString(tab));

        // Initialiser un compteur pour compter les occurrences 
        // de la valeur 10
        int c1 = 0; 
        // Initialiser un compteur pour compter les occurrences 
        // de la valeur 20
        int c2 = 0;

        for(int i = 0; i < tab.length; i++) {
            if(tab[i] == 10)
                // Incrémenter c1 lorsque l'élément est égal à 10
                c1++; 

            if(tab[i] == 20)
                // Incrémenter c1 lorsque l'élément est égal à 20
                c2++;
        }

        // Vérifier si le nombre de valeur 10 est supérieur au 
        // nombre de valeur 20
        System.out.printf(String.valueOf(c1 > c2)); 
    }
}

Sortie:

Tab: [10, 10, 10, 15, 50, 60, 20]
true
 

Exercice 2:

Écrire un programme Java pour vérifier si un tableau d’entiers contient 10 ou 30.

Exemple de sortie:

Tab: [10, 15, 25, 33, 45, 30, 55]
true
Solution:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int[] tab = {10, 15, 25, 33, 45, 30, 55};
        int result = 1; 
        System.out.println("Tab: "+Arrays.toString(tab));

        // Parcourir le tableau
        for(int i = 0; i < tab.length; i++) {
            if(tab[i] == 10 || tab[i] == 30) {
                // Si l'élément est égal à 10 ou 30, le résultat est 
                // fixé à 0
                result = 0;
            }
        }

        if (result == 1)
            // Si le résultat est 1, afficher false
            System.out.printf(String.valueOf(false));
        else
            // Si le résultat est différent de 1, afficher true
            System.out.printf(String.valueOf(true)); 
    }
}

Sortie:

Tab: [10, 15, 25, 33, 45, 30, 55]
true
 

Exercice 3:

Écrivez un programme Java pour vérifier si la valeur 10 apparaît trois fois et si aucun 10 ne se trouve à côté d'un autre dans le tableau d'entiers.

Exemple:

Tab: [10, 30, 10, 40, 50, 10]
true
Solution:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        int[] tab = {10, 30, 10, 40, 50, 10};
        // Initialiser la variable count pour suivre le nombre 
        // d'occurrences de 10
        int count = 0; 
        // Initialiser une variable de résultat pour suivre 
        // l'évolution de la situation
        int result = 0; 

        // Vérifier si le tableau a au moins un élément et si le 
        // premier élément est 10
        if (tab.length >= 1 && tab[0] == 10) {
            // Incrémenter le compteur si le premier élément est 10
            count++;
        }

        // Parcourir le tableau en commençant par le deuxième élément 
        // (c'est-à-dire index 1)
        for (int i = 1; i < tab.length; i++) {
            // Vérifier si l'élément précédent et l'élément actuel 
            // sont tous les deux 10
            if (tab[i - 1] == 10 && tab[i] == 10) {
                // Afficher false si 10 éléments consécutifs sont 
                // trouvés
                System.out.printf(String.valueOf(false)); 
                result = 1; // Set the result to 1
            }

            // Vérifier si l'élément courant est 10 et incrémenter 
            // le compteur
            if (tab[i] == 10) {
                count++;
            }
        }

        // Si le résultat est toujours 0, cela signifie que le motif 
        // spécifique n'a pas été trouvé.
        if (result == 0) {
            // Afficher true si le nombre est égal à 3
            System.out.printf(String.valueOf(count == 3));
        }
    }
}

Sortie:

true
 

Exercice 4:

Écrire un programme Java pour vérifier si un tableau d'entiers contient trois nombres adjacents croissants.

Exemple de sortie:

Tab: [50, 1, 2, 3, 8, 45]
true
Solution:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int[] tab = {50, 1, 2, 3, 8, 45};

        System.out.println("Tab: " + Arrays.toString(tab));

        // Initialiser une variable de résultat à 1
        int result = 1;

        // Parcourir le tableau pour vérifier la présence 
        // d'entiers consécutifs
        for (int i = 0; i <= tab.length - 3; i++) {
            // Vérifier si le nombre actuel, le suivant et celui 
            // d'après sont consécutifs
            if (tab[i] + 1 == tab[i + 1] && tab[i + 1] + 1 == tab[i + 2]) {
                // S'ils sont consécutifs, le résultat est fixé à 0
                result = 0;
            }
        }

        // Vérifier le résultat et afficher soit true, soit false
        if (result == 1) {
            System.out.printf(String.valueOf(false));
        } else {
            System.out.printf(String.valueOf(true));
        }
    }
}

Sortie:

Tab: [50, 1, 2, 3, 8, 45]
true
 

Exercice 5:

Ecrivez un programme Java pour vérifier si l'entier donné est une puissance de 4 ou non.

Exemple:

64 = 43 -> True
16 = 42 -> True
1 = 40 -> True
6  -> False
Solution:

import java.util.Scanner;

public class Main {
    public static void main(String[] arg) {
        int test = 0;
        Scanner sc = new Scanner(System.in);

        System.out.print("Entrer un nombre entier positif: ");
        
        int n = sc.nextInt();

        if (n < 1) {
            // Si n est inférieur à 1, on affiche 'false' et on met 
            // 'test' à 1
            System.out.print(Boolean.toString(false));
            test = 1;
        }

        if ((n & (n - 1)) != 0) {
            // Si n n'est pas une puissance de 2, on affiche 'false' 
            // et on met 'test' à 1
            System.out.print(Boolean.toString(false));
            test = 1;
        }

        if (test == 0) {
            // Si 'test' est 0, vérifier si n a des bits impairs et 
            // afficher le résultat.
            System.out.print(Boolean.toString((n & 0x55555555) != 0)); 
        }
    }	
}

Sortie:

Entrer un nombre entier positif: 16
true
 

Exercice 6:

Écrire un programme Java pour additionner deux nombres sans opérateurs arithmétiques.

Exemple:

x = 4 
y = 2; 
result = 6
Solution:

import java.util.Scanner;

public class Main {
    public static void main(String[] arg) {
        int x, y;
        Scanner sc = new Scanner(System.in); 

        System.out.print("Saisir le premier nombre: ");
        x = sc.nextInt();

        System.out.print("Saisir le deuxième nombre: ");
        y = sc.nextInt();

        while (y != 0) {
            // Calculer la retenue par l'opération AND bit à bit 
            // entre x et y
            int retenu = x & y;
            // Calculer la somme sans tenir compte de la retenue par 
            // l'opération XOR bit à bit.
            x = x ^ y; 
            // Calculer la retenue pour la prochaine itération en la 
            // décalant d'une position vers la gauche.
            y = retenu << 1; 
        }

        // Afficher la somme des deux nombres
        System.out.print("Somme: " + x); 
    }
}

Sortie:

Saisir le premier nombre: 4
Saisir le deuxième nombre: 2
Somme: 6
 

Exercice 7:

Écrire un programme Java pour fusionner deux tableaux d'entiers triés et créer un autre tableau trié.

Exemple:

Tab1: [1, 2, 3, 4, 0, 0, 0, 0]

Tab2: [3, 6, 7, 8]

Tableau fusionné: [1, 2, 3, 3, 4, 6, 7, 8]
Solution:

import java.util.*;

public class Main {
    public static void main(String[] arg) {
        // tab1 a 'm' éléments mais est assez grand pour contenir 
        // 'm+n' éléments
        // Déclaration et instanciation de tab1
        int tab1[] = new int[8];
        
        // Initialiser les quatre premiers éléments de tab1
        tab1[0] = 1;
        tab1[1] = 2;
        tab1[2] = 3;
        tab1[3] = 4;
        
        // tab2 a 'n' éléments
        // Initialiser tab2
        int[] tab2 = {3, 6, 7, 8};
        
        System.out.println("\nTab1: " + Arrays.toString(tab1));
        System.out.println("\nTab2: " + Arrays.toString(tab2));
        
        // Définissez les variables m et n
        int m = 4, n = 4;
        
        // Initialiser les pointeurs pour tab1 (i) et tab2 (j) et 
        // l'index pour la fusion (index)
        int i = m - 1, j = n - 1, index = m + n - 1;
        
        // Fusionner les deux tableaux dans tab1
        while (i >= 0 && j >= 0) {
            if (tab1[i] > tab2[j]) {
                tab1[index--] = tab1[i--];
            } else {
                tab1[index--] = tab2[j--];
            }
        }
        
        // Traiter les éléments restants dans tab1 (s'il y en a)
        while (i >= 0) {
            tab1[index--] = tab1[i--];
        }
        
        // Traiter les éléments restants dans tab2 (s'il y en a)
        while (j >= 0) {
            tab1[index--] = tab2[j--];
        }

        System.out.println("\nTableau fusionné: " + Arrays.toString(tab1));
    }
}

Sortie:

Tab1: [1, 2, 3, 4, 0, 0, 0, 0]

Tab2: [3, 6, 7, 8]

Tableau fusionné: [1, 2, 3, 3, 4, 6, 7, 8]
 

Exercice 8:

Ecrivez un programme Java pour vérifier si un nombre positif est un palindrome ou non.

Exemple:

Saisir un nombre entier positif: 121
121 est-il un nombre palindrome ?
true
Solution:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Saisir un nombre entier positif: ");
        int n = sc.nextInt();
        
        System.out.printf("%d est-il un nombre palindrome ?\n", n);
        
        // Vérifier si le nombre est un palindrome et afficher 
        // le résultat.
        System.out.println(checkPalindrome(n));
    }

    // Fonction permettant d'inverser les chiffres d'un nombre
    public static int reverseNbr(int n) {
        int reverse = 0;
        while (n != 0) {
            reverse *= 10;
            reverse += n % 10;
            n /= 10;
        }
        return reverse;
    }

    // Fonction permettant de vérifier si un nombre est un palindrome
    public static boolean checkPalindrome(int n) {
        return (n == reverseNbr(n));
    }
}

Sortie:

Saisir un nombre entier positif: 121
121 est-il un nombre palindrome ?
true
 

Exercice 9:

Écrire un programme Java pour calculer la racine carrée d'un nombre donné.

Exemple:

Saisir un nombre entier positif: 16
La racine carrée de 16 est: 4
Solution:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Saisir un nombre entier positif: ");
        int nbr = sc.nextInt(); 

        System.out.printf("La racine carrée de %d est: ", nbr);

        // Appeler la méthode sqrt pour calculer la racine carrée et 
        // afficher le résultat.
        System.out.println(sqrt(nbr)); 
    }

    // Méthode pour calculer la racine carrée d'un nombre
    private static int sqrt(int n) {
        if (n == 0 || n == 1) {
            return n;
        }
        int a = 0;
        int b = n;

        // Effectuer une recherche binaire pour trouver la racine 
        // carrée
        while (a <= b) {
            int mid = (a + b) >> 1;
            if (n / mid < mid) {
                b = mid - 1;
            } else {
                if (n / (mid + 1) <= mid) {
                    return mid;
                }
                a = mid + 1;
            }
        }
        return a;
    }
}

Sortie:

Saisir un nombre entier positif: 16
La racine carrée de 16 est: 4
 

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