#1 Le 09/09/2022, à 02: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, à 10: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, à 00: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, à 07: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, à 07: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, à 08:37)
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#6 Le 10/09/2022, à 07: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, à 14: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