CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Debutant] Programme de créations d'intervalles en JAVA

Synchro-chan
Synchro-chan
Niveau 10
28 septembre 2017 à 17:56:45

Bonsoir
Je débute cette année le langage JAVA. Je suis seulement capable d'écrire des programmes simples effectuant des calculs, affichant des messages etc.. Rien de spé quoi
Et donc là je dois corriger tout un code qui consiste à:
- Saisir des Intervalles d'entiers:
- Supprimer des intervalles
- En rajouter
- Vérifier si un entier appartient à un intervalle
- Vérifier si un intervalle est inclus dans un autre

En gros voici le code :

public class Exo4 {

    public static int tab[][];
    public static int nb;

    public static int menu() {
        //choix d'une opération
        Scanner sc;
        int rep;
        sc = new Scanner(System.in);
        System.out.println("Que voulez vous faire?");
        System.out.println("1 : Supprimer un intervalle");
        System.out.println("2 : Ajouter un intervalle");
        System.out.println("3 : Vérifier si un entier appartient à l'un des intervalles");
        System.out.println("4 : Vérifier si un intervalle est inclus dans l'un des intervalles");
        System.out.println("5 : Quitter");
        rep = sc.nextInt();
        return rep;
    }

    public static void proc1(int tabl[][], int ind) {
        //saisie d'un intervalle
        Scanner sc;
        sc = new Scanner(System.in);
        tabl[ind][0] = sc.nextInt();
        tabl[ind][1] = sc.nextInt();
        while (tabl[ind][0] > tabl[ind][1]) //Retrait du ;
        {
            System.out.println("Erreur. Recommencer :");
            tabl[ind][0] = sc.nextInt();
            tabl[ind][1] = sc.nextInt();
        }
    }

    public static void proc2(int tabl[][]) {
        //remplissage du tableau        
        int i;
        for (i = 1; i <= tabl.length; i++) { //On peut aussi faire: for(i=0;i<tab.length;i++)puis remplacer i+1
            System.out.println("Quel est le " + i + "eme intervalle ?");
            proc1(tabl, i-1); //Remplacer i par i-1 
        }
    }

    public static void proc3(int tabl[][]) {
        //affichage du tableau
        int i;
        System.out.println("Voici les intervalles :");
        for (i = 0; i < tabl.length; i++) {
            System.out.println((i + 1) + " - [" + tabl[i][0] + "," + tabl[i][1] + "]"); //Remplacer "tab" par "tabl"
        }
        System.out.println();
    }

    public static void proc4(int ind, int max) {
        //saisie d'un indice
        Scanner sc;
        sc = new Scanner(System.in);
        do {
            System.out.println("Quel est l'indice de l'intervalle (1 à " + max + ")? ");
            ind = sc.nextInt();
        } while (ind < 1 && ind > max);
        ind--;
    }

    public static void proc5(int tabl[][]) {
        //suppression d'un intervalle
        int i;
        int nbSupp = 0;
        int nb1 = tabl.length - 1;
        int[][] tab1 = new int[nb1][2];
        System.out.println("Vous avez choisi de supprimer un intervalle");
        proc4(nbSupp, tabl.length);
        for (i = 0; i < nbSupp; i++) {
            tab1[i] = tabl[i];
        }
        for (i = nbSupp + 1; i < tab1.length; i++) {
            tab1[i - 1] = tabl[i];
        }
        tab1 = tabl; 
        proc3(tab1); //Il faut afficher les nouveaux Intervalles à la fin de la procédure.
        
    }

    public static int[][] proc6(int tabl[][]) {
        //ajout d'un intervalle  
        int[][] tab1;
        int nb1 = tabl.length + 1;

        tab1 = new int[nb1][2];
        System.out.println("Vous avez choisi d'ajouter un intervalle");
        for (int i = 0; i < nb1 - 1; i++) {
            tab1[i] = tabl[i];
        }
        System.out.println("Quel est le nouvel intervalle ?");
        proc1(tab1, nb1 - 1);
        proc3(tab1);
        return tab1;
    }

    public static void proc7(int tabl[][]) {
        //vérifier si un entier appartient à l'un des intervalles        
        Scanner sc = null;
        System.out.println("Vous avez choisi de vérifier si un entier appartient à l'un des intervalles");
        System.out.println("Quel est l'entier ?");
        int rech = sc.nextInt();
        System.out.println("Voici les intervalles auxquels appartient cet entier :");
        for (int i = 0; i < tabl.length; i++) {
            if (rech >= tabl[i][0] && rech <= tabl[i][1]) {
                System.out.println("[" + tab[i][0] + "," + tab[i][1] + "]");
            }
        }
    }

    public static void proc8(int tabl[][]) {
        //vérifier si un intervalle est inclus dans l'un des intervalles 
        System.out.println("Vous avez choisi de vérifier si un intervalle est inclus dans l'un des intervalles");
        System.out.println("Quel est l'intervalle ?");
        proc1(tab, 0);
        System.out.println("Voici les intervalles auxquels appartient cet intervalle :");
        for (int i = 0; i < tabl.length; i++) {
            if (tab[0][0] >= tabl[i][0] && tab[0][1] <= tabl[i][1]) {
                System.out.println("[" + tab[i][0] + "," + tab[i][1] + "]");
            }
        }
    }

    public static void main(String[] args) {
        int nb;
        int tab[][];
        int rep;
        Scanner sc;
        sc = new Scanner(System.in);

        System.out.println("Combien d'intervalles voulez vous saisir ?");
        nb = sc.nextInt();
        tab = new int[nb][2];
        proc2(tab);
        proc3(tab);

        do {
            rep = menu();
            switch (rep) {
                case 1:
                    proc3(tab);
                    proc5(tab);
                    break;
                case 2:
                    proc3(tab);
                    proc6(tab);
                    break;
                case 3:
                    proc3(tab);
                    proc7(tab);
                case 4:
                    proc3(tab);
                    proc8(tab);
                case 5:
                    System.out.println("Au revoir");
                default:
                    System.out.println("Choix non valide");
            }
        } while (rep != 5);
    }
}
Pseudo supprimé
Pseudo supprimé 28 septembre 2017 à 19:10:55

Et qu'attends-tu de ce forum ?

zbou-le-boss
zbou-le-boss
Niveau 10
29 septembre 2017 à 10:42:04

Ce serait bien de savoir en quoi ton code ne fait pas ce que tu voudrais qu'il fasse.
Et que tu utilises la balise qui sert à mettre du code, un pavé comme ça personne ne le regardera jamais.

89ron
89ron
Niveau 10
29 septembre 2017 à 22:20:00

Le nom des fonction fait mal aux yeux : proc1, proc2,proc3 c'est illisible., surtout avec si peu de commentaire.

Exemple au lieu d'appeller : une fonction proc3() , utiliser afficherTableau(), serait beaucoup plus clair et dans ce cas il n'y a pas besoin de voir son code pour comprendre ce qu'elle fait.

Sinon dans ton bloc switch.case, il manque des break;

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment