Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/09/2022, à 03:39

SOSRapides

Mon programme java n’exécute pas bien

Bonsoir tout le monde;

Sans commentaire;

Après de nombreuses vérifications J'ai maintenant deux problèmes:

1-

dans  while (i < n) {  }

l'entrée en première fois de cette boucle bipasse la lecture clavier de ce message  System.out.println("Veuillez saisir l’Id de l’étudiants :");

notamment IdEtud=keby.nextLine();

Et ça nous renvois au deuxième message:  System.out.println("Veuillez saisir le nom de l’étudiants :");

2-

à la sortie de while (i < n) {  } , au lieu de rester dans le menu principal, ça nous ramène toujours dans ce message de la fonction:

public static  String[][] SaisieEtudiant(Scanner keby) {

System.out.println("Veuillez saisir le nombre d’étudiants :");

Voici le code en entier:

package PegaleNP;

import java.util.*;

//import java.lang.String;


public class PegaleNP {
	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//PegaleNP d1 = new Dortoir ();
		
		@SuppressWarnings("resource")
		Scanner keby = new Scanner(System.in);
		
		System.out.println("----- Menu principal ------------");
        System.out.println("    1. Liste d’étudiants        "); 
        System.out.println("    2.Liste d’étudiants incompatibles  ");
        System.out.println("      3. Sélection d’étudiants  ");
        System.out.println("           4.Rechercher           ");
        System.out.println("          5.Quitter         ");
        System.out.println("     Taper votre choix : ");
		//int sc=keby.nextInt();
	   	int choix = keby.nextInt();
		 	  
	//	int  choix=0;
				do

		          {
		            System.out.println("------- Menu principal ---------");
		            System.out.println("    1. Liste d’étudiants        "); 
		            System.out.println("    2.Liste d’étudiants incompatibles  ");
		            System.out.println("      3. Sélection d’étudiants  ");
		            System.out.println("           4.Rechercher           ");
		            System.out.println("          5.Quitter         ");
		            System.out.println("    Taper votre choix : ");
		            
		          // int  choix=Integer.parseInt(sc.nextLine()) ;
		            switch(choix)
		            {
		            case 1: SaisieEtudiant (keby);
		                    break;
		         /*   case 2: SaisieIncompatibilite ()
		                    break;
		            case 3: Selection (Tab-Etud , Tab-Etud-Inc)
		                    break;     
		            case 4: Recherche (Tab-Etud-Inc , Id1, Indice)
		                    break;              */
		            default: System.out.println("Veuillez respecter le menu!");
		            }
		             }
		             while(choix!=5);		         


	}
	
	 public static  String[][] SaisieEtudiant(Scanner keby) {

   	 System.out.println("Veuillez saisir le nombre d’étudiants :");

   	int n=keby.nextInt();

   	  String [][] TabEtud = new  String[n][4];

   	  int i=0;

   	  String IdEtud; 

   	  String Nom;

   	  String Prenom;

   	  String Adresse;

   	  while (i < n) {

   	  System.out.println("Veuillez saisir l’Id de l’étudiants :");

   	  IdEtud=keby.nextLine();

   	  TabEtud[i][0]= IdEtud;

   	  System.out.println("Veuillez saisir le nom de l’étudiants :");

   	  Nom=keby.nextLine();

   	  TabEtud[i][1]=Nom;

   	  System.out.println("Veuillez saisir le prénom de l’étudiants :");

   	  Prenom=keby.nextLine();

   	  TabEtud[i][2]=Prenom;

   	  System.out.println("Veuillez saisir l’adresse de l’étudiants :");

   	  Adresse=keby.nextLine();

   	  TabEtud[i][3]=Adresse;

   	   
   	  i =i+1;
   	   
   	  }
   	   
   	  return TabEtud;  
   	  }
	
}

Voilà l'affichage:

----- Menu principal ------------
    1. Liste d’étudiants        
    2.Liste d’étudiants incompatibles  
      3. Sélection d’étudiants  
           4.Rechercher           
          5.Quitter         
     Taper votre choix : 
1
------- Menu principal ---------
    1. Liste d’étudiants        
    2.Liste d’étudiants incompatibles  
      3. Sélection d’étudiants  
           4.Rechercher           
          5.Quitter         
    Taper votre choix : 
Veuillez saisir le nombre d’étudiants :
2
Veuillez saisir l’Id de l’étudiants :
Veuillez saisir le nom de l’étudiants :

Merci pour votre aide;

Hors ligne

#2 Le 09/09/2022, à 11:25

grigouille

Re : Mon programme java n’exécute pas bien

Quelques conseils :

Tu devrais créer une class Etudiant avec les propriétés idEtud, nom, prenom, adresse.

Ensuite au lieu d'utiliser un tableau d'étudiants, tu devrais plutôt utiliser une List d'étudiants (List<Etudiant>).


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#3 Le 10/09/2022, à 01:59

SOSRapides

Re : Mon programme java n’exécute pas bien

Bonsoir Mr grigouille;

Je voulais faire ça très simple et plus rapidement sans tarder pour revenir sur l'essentiel càd la théorie donc je veux faire cas;

mais je me suis embourbé en perdant le filon sur plusieurs choses en java notamment votre conseils;

Actuellement, cette partie du code marche après plusieurs corrections sauf une partie càd le message dans (do while) :Veuillez saisir l’Id de l’étudiants et c'est ce message que ça double deux fois; Veuillez saisir l’Id de l’étudiants : qui est anormal;

voici l'affichage:

------- Menu principal ---------
    1. Liste d’étudiants        
    2.Liste d’étudiants incompatibles  
      3. Sélection d’étudiants  
           4.Rechercher           
          5.Quitter         
    Taper votre choix : 
1
Veuillez saisir le nombre d’étudiants :
3
Veuillez saisir l’Id de l’étudiants :
Veuillez saisir l’Id de l’étudiants :
01
Veuillez saisir l’Id de l’étudiants :
02
------- Menu principal ---------
    1. Liste d’étudiants        
    2.Liste d’étudiants incompatibles  
      3. Sélection d’étudiants  
           4.Rechercher           
          5.Quitter         
    Taper votre choix : 
2
Veuillez saisir le nombre pair d’étudiant incompatible :
1
Veuillez saisir l’Id de l’étudiant1 incompatible:
Veuillez saisir l’Id de l’étudiant2 incompatible:
01
------- Menu principal ---------
    1. Liste d’étudiants        
    2.Liste d’étudiants incompatibles  
      3. Sélection d’étudiants  
           4.Rechercher           
          5.Quitter         
    Taper votre choix : 

voici le code entier:

package PegaleNP;

import java.util.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PegaleNP {
	
	
	
	public static void main(String[] args ) {
			
		Scanner keby = new Scanner(System.in);		
	
	   	String choix ; 	 	  
	
				do

		          {
		            System.out.println("------- Menu principal ---------");
		            System.out.println("    1. Liste d’étudiants        "); 
		            System.out.println("    2.Liste d’étudiants incompatibles  ");
		            System.out.println("      3. Sélection d’étudiants  ");
		            System.out.println("           4.Rechercher           ");
		            System.out.println("          5.Quitter         ");
		            System.out.println("    Taper votre choix : ");
		             choix = keby.nextLine();
		          // int  choix=Integer.parseInt(sc.nextLine()) ;
		            switch(choix)
		            { 
		            case "1": saisieEtudiant (keby);
		                    break;
		            case "2": saisieIncompatibilite (keby);
		                    break;
		         /*   case "3": Selection (TabEtud , TabEtudInc, keby,Indice);
		                    break;     
		            case "4": Recherche (TabEtudInc , Id1, Indice);
		                    break;     */         
		            default: System.out.println("Veuillez respecter le menu!");
		            }
		            
		             }
		             while(choix!="5");		         


	}
	
	 public static  String[][] saisieEtudiant(Scanner keby) {

   	 System.out.println("Veuillez saisir le nombre d’étudiants :");

   	int n=keby.nextInt();

   	  String [][] tabEtud = new  String[n][4];

   	  int i=0;

   	  String idEtud; 

   	  String nom;

   	  String prenom;

   	  String adresse;

   	do {

   	  System.out.println("Veuillez saisir l’Id de l’étudiants :");

   	  idEtud=keby.nextLine();

   	  tabEtud[i][0]= idEtud;

   	/*  System.out.println("Veuillez saisir le nom de l’étudiants :");

   	  nom=keby.nextLine();

   	  tabEtud[i][1]=nom;

   	  System.out.println("Veuillez saisir le prénom de l’étudiants :");

   	  prenom=keby.nextLine();

   	  tabEtud[i][2]=prenom;

   	  System.out.println("Veuillez saisir l’adresse de l’étudiants :");

   	  adresse=keby.nextLine();

   	  tabEtud[i][3]=adresse;*/

   	   
   	  i =i+1;
   	   
   	 } while (i<n);
   	   
   	  return tabEtud;  
   	  }
	
	 public static String [][] saisieIncompatibilite (Scanner keby) {

		 System.out.println("Veuillez saisir le nombre pair d’étudiant incompatible :");

		 int n=keby.nextInt();
		 
		 String [][] tabEtudInc = new String[n][2];

		 String idEtud1;

		 String idEtud2; 
		 
		 int i=0;

		 do {

		 System.out.println("Veuillez saisir l’Id de l’étudiant1 incompatible:");

		 idEtud1=keby.nextLine();

		 tabEtudInc[i][0]= idEtud1;

		 System.out.println("Veuillez saisir l’Id de l’étudiant2 incompatible:");

		 idEtud2=keby.nextLine();

		 tabEtudInc[i][0]= idEtud2;

		  
		 i =i+1;
		  
		 } while (i<n);
		  
		 return tabEtudInc;  
		 }

 }

Une dernière chose:

la partie du code qui reste non affichée ici pour le moment ne compile pas pour une raison:

je veux connaitre le nombre d’éléments contenus dans tabEtudSelect, un tableau static qui est déjà déclaré dont je veux transformer en ArrayList puis appliquer le size();

mais ça ne reconnait pas ce code:

Collections.addAll(al, tabEtudSelect);
		 
		 n = tabEtudSelect.size() ;

		 if (tabEtudSelect.isEmpty()) {

avant j'ai aussi essayé:

// Convertir le tableau en liste
		 
		 //List<String> liste = new ArrayList<>();
		 
		//liste = Arrays.asList(tabEtudSelect);

Et puis ça aussi sans succès:

// List<String> list = new ArrayList<String>(Arrays.asList(tabEtudSelect));

 et ça:
 //List<String> al = (ArrayList<String>)toArrayList(tabEtudSelect);

Merci pour votre aide;

Hors ligne

#4 Le 10/09/2022, à 08:17

grigouille

Re : Mon programme java n’exécute pas bien

Une erreur :

while(choix!="5");

Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#5 Le 10/09/2022, à 08:28

grigouille

Re : Mon programme java n’exécute pas bien

Pour parcourir un tableau, utilise une boucle for :

for(String[] etudiant : tabEtud) {

   	  System.out.println("Veuillez saisir l’Id de l’étudiants :");

   	  idEtud=keby.nextLine();

   	  //tabEtud[i][0]= idEtud;
   	  etudiant[0]= idEtud;
}

Dernière modification par grigouille (Le 10/09/2022, à 09:37)


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#6 Le 10/09/2022, à 08:39

grigouille

Re : Mon programme java n’exécute pas bien

Pour lire une entrée utilisateur : lit la ligne et fait la conversion :

//   	int n=keby.nextInt();
		int n = Integer.parseInt(keby.nextLine().strip());

Attention, il faudra protéger le code si l'utilisateur ne rentre pas un nombre.


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#7 Le 10/09/2022, à 15:20

SOSRapides

Re : Mon programme java n’exécute pas bien

Bonjour Mr grigouille;

Merci pour votre aide

Vous avez dit:

1-
Une erreur :

while(choix!="5");
choix est déclaré en String:

String choix ;    

2-
Pour parcourir un tableau, utilise une boucle for :

Mais je suis entrain de construire le tableau et non de la parcourir;

et etudiant n'existe pas chez moi; je le fait dans tabEtud tableau à deux dimensions mais dans le code les autres( nom, prénom, adresse) est en commentaires pour faciliter les différent tests; ça ne veux pas dire que c'est retirer dans le code;

3-
//       int n=keby.nextInt();
int n = Integer.parseInt(keby.nextLine().strip());

je mets ça à quels niveau?

le menu? ou avec
System.out.println("Veuillez saisir le nombre d’étudiants :");

int n=keby.nextInt();

je ne comprend pas cette partie et puis je lit les strings plus que les int;

Hors ligne