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

[java] Besoin d'aide

pseudo-anonyme
pseudo-anonyme
Niveau 10
23 octobre 2010 à 13:52:23

Bonjour à tous !

Voilà je dois créer une application en java capable de gérer un agenda(Ajouter une personne,supprimer une personne,modifier les infos d'une personne,et enfin rechercher une personne)...

J

pseudo-anonyme
pseudo-anonyme
Niveau 10
23 octobre 2010 à 13:57:33

Owned by tab :(

Toutes les personnes sont stockées dans une ArrayList...

Je dois donc créer un menu... Que voici:

System.out.println("Choisissez une option(1,2,3,4,5):");

System.out.println("-----------------------------
----------\n");
System.out.println("1.Ajouter une personne à l'agenda\n");
System.out.println("2.Supprimer une personne\n");
System.out.println("3.Modifier une personne déjà existante\n");
System.out.println("4.Rechercher une personne\n");
System.out.println("5.Quitter");

Mais je renconte un fameux problème quand je dois ajouter une personne: Voici le code:

while(a!=5){
if(a==1){

System.out.println("Entrez le nom de la personne:");
b=monScan.nextLine();
System.out.println("Entrez son adresse");
c=monScan.nextLine();
System.out.println("Entrez son numéro de téléphone");
d=monScan.nextLine();
Personne p1=new Personne(b,c,d);
liste.add(p1);
System.out.println("Désirez-vous ajouter une autre personne?(oui/non");
e=monScan.nextLine();
if(e.equals("oui")){

}

}

Comment faire pour que plus d'une personne puisse être ajouté :question:

Pcq la personne p1 ne s'ecrase pas :-(

Mais bon si on ajoute plus de 100 personnes je ne vais pas créer de p1 jusqu'à p100... :(

Pouvez-vous m'aider :question:

isukthar
isukthar
Niveau 10
23 octobre 2010 à 15:23:48

tu met juste le code qui ajout la personne dans une boucle. Tant que tu fais un new et un add pour chaque personne, c'est bon la personne sera stockée.

Bunyan
Bunyan
Niveau 17
23 octobre 2010 à 15:39:37

Généralement, pour les menus, on utilise plutôt la boucle "do {} while()", mais bon, c'est en général ça :)

Pour ton truc, tu pourrais créer un booléen initialiser à false, puis rentrer dans un while ou un do while et mettre tes lignes d'ajouts dedans.

pseudo-anonyme
pseudo-anonyme
Niveau 10
24 octobre 2010 à 17:24:23

Merci :)

Mais je rencontre un nouveau problème :

http://img168.imageshack.us/img168/3374/sanstitredcy.jpg

Pourquoi il m'affiche les 2 phrases en même temps :( :question:

pseudo-anonyme
pseudo-anonyme
Niveau 10
24 octobre 2010 à 17:31:15

Et bizarrement quand une personne est déjà créé il m'affiche une phrase à la fois :(

J'ai essayé de mettre un next() au lieu de nextLine à la première entrée mais ça ne marche pas non plus :-(

stationessence
stationessence
Niveau 8
25 octobre 2010 à 03:51:03

Je te code une classe de façon un peu plus propre qui te permettra de récupérer des valeurs directement entré en console. Tu pourras t'en servir si tu as besoin en modifiant tout ou partiellement le code envoyé.

Ca arrive dans 5 minutes.

stationessence
stationessence
Niveau 8
25 octobre 2010 à 03:59:32

Voilà c'est codé, enregistre le texte dans un document appelé Clavier.java. Juste un petit copier coller, j'ai testé toutes les méthodes et à priori ca fonctionne.

Tu utiliseras la méthode lireChaine() de la classe clavier quand tu voudras lire un string.
Essaie avec ca à la place de tes nextLine() qui finisse forcement par embrouillé l'utilisateur.

-----------------Classe Clavier.java--------------------------

import java.io.*;

/**
* Classe simplissime pour la saisie au clavier.
* Retourne ce que l'utilisateur sous le format spécifié.
*
* @author Wassim
*/
public class Clavier {
private static final BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));

/**
* Retourne la chaine de caractère tapée par l'utilisateur sous forme de
* chaine de caractère.
* @return la chaine de caractère tapée par l'utilisateur.
*/
public static String lireChaine() {
String saisie = "";
try {
saisie = clavier.readLine();
} catch (IOException ioe) {
}
return saisie;
}

/**
* Retourne la chaine de caractère tapée par l'utilisateur sous forme d'entiers
* @return l'entier tapé par l'utilisateur.
*/
public static int lireEntier() {
boolean ok = false;
String saisie = "";
int res = 0;
while (!ok) {
try {
saisie = clavier.readLine();
res = Integer.parseInt(saisie);
ok = true;
} catch (IOException ioe) {
} catch (NumberFormatException nfe) {
}
if (!ok)
System.err.println("Tapez un nombre entier !");
}

return res;
}

/**
* Retourne la chaine de caractère tapée par l'utilisateur sous forme de double.
* @return le double tapé par l'utilisateur.
*/
public static double lireDouble() {
boolean ok = false;
String saisie = "";
double res = 0.0;
while (!ok) {
try {
saisie = clavier.readLine();
res = Double.parseDouble(saisie);
ok = true;
} catch (IOException ioe) {
} catch (NumberFormatException nfe) {
}
if (!ok)
System.err.println("Tapez un nombre réel !");
}

return res;
}

}

stationessence
stationessence
Niveau 8
25 octobre 2010 à 04:08:42

Juste une petite précision au cas où tu n'as pas des bases poussé en Java. J'ai déclaré toutes les méthodes en static.
Une fois la méthode déclaré, elle existe donc en un seul exemplaire pour toute les instances de la classe.

Il faudra utiliser une syntaxe particulière pour l'invoquer. Par exemple, pour reprendre ton code :

System.out.println("Entrez son numéro de téléphone") ;
String rep = Clavier.lireChaine() ;

La variable rep contiendra la réponse.

Le flux utilisé est un BufferedReader que je trouve moins sujet à bug que la classe Scanner.

pseudo-anonyme
pseudo-anonyme
Niveau 10
25 octobre 2010 à 19:03:15

Un grand merci à toi je vais essayer comme ça :)

Sinon je vis en Belgique et je suis en 2ème informatique de gestion... C'est un baccalauréat de 3 ans...

Mais je ne connaissais pas "BufferedReader". Merci :ok:

pseudo-anonyme
pseudo-anonyme
Niveau 10
25 octobre 2010 à 20:16:04

Merci beaucoup tout marche niquel :ok:

Mais je veux pousser la difficulté encore plus loin...

Voilà je voudrais trier les éléments de ma liste dans l'ordre alphabétique des noms :-)

Pour ça dans ma classe "Personne" J'implemente l'interface "Comparable" et je créé bien évidemment la méthode "compareTo"

Donc

public Personne implements Comparable <Personne>{

//Déclaration des variables

....

public int compareTo(Personne p){

// Et voilà où je rencontre un problème :-( Je sais qu'on compare 2 chaines de caractères avec equals(object) mais comment faire pour les trier dans l'ordre alphabétique???

}

Est-ce que j'utilise la mauvaise méthode ?

Merci d'avance :)

godrik
godrik
Niveau 30
25 octobre 2010 à 20:38:16

string.compareto

pseudo-anonyme
pseudo-anonyme
Niveau 10
25 octobre 2010 à 20:38:23

Ah ç'est bon j'ai trouvé merci grâce à cette méthode :

public static ArrayList <Personne> TriAlphabetique (ArrayList <Personne> Liste){

Integer i, j, min;
Personne temp;
for(i = 0; i < Liste.size(); i++)
{
min = i;
for(j = i; j < Liste.size(); j++)
{

if(Liste.get(min).getNom().compareTo(Liste.get
(j).getNom()) > 0)
{
min = j;
}
}
temp = Liste.get(i);
Liste.set(i, Liste.get(min));
Liste.set(min, temp);
}
return Liste;
}

tbop2
tbop2
Niveau 10
26 octobre 2010 à 13:48:41

Sinon l'ami au passage quelques petits trucs pour avoir un code plus propre.

1) Noms de variables explicites ! (pas de a de b où je ne sais quoi d'autre : user_choice par exemple)

2) Ecrire en anglais, ça fait progresser et en plus comme ça ton code et récupérable partout et sur tous les forums (pour l'instant ça va tu codes des petits trucs)

4) Divise ton code en méthode c'est beaucoup plus clair.

3) Le switch case c'est la vie.

Voici le template général pour un menu interactif en console

do
{
//Clear the shell

//What do you want to do?
//Printf Bla bla

//Catch the user's choice

switch(user_choice)
{
case 1: addClient();
break;
case 2: removeClient();
break;
case 3: checkClient();
break
default : //Wrong choice
}

//Exit statement

} while(continue);

pseudo-anonyme
pseudo-anonyme
Niveau 10
02 décembre 2010 à 11:15:07

Merci à tous de vos réponses :ok:

Mais si maintenant je souhaite lire plusieurs valeurs en même temps, comment faut-il procéder :question:

Par exemple si on demande à l'user de rentrer plusieurs "double" en meme temps :question:

Merci d'avance :ok:

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