Modificqation des attribut
Fermé
mimi19911980
Messages postés
22
Date d'inscription
mardi 10 novembre 2020
Statut
Membre
Dernière intervention
14 octobre 2021
-
Modifié le 11 nov. 2020 à 08:56
mimi19911980 Messages postés 22 Date d'inscription mardi 10 novembre 2020 Statut Membre Dernière intervention 14 octobre 2021 - 12 nov. 2020 à 06:26
mimi19911980 Messages postés 22 Date d'inscription mardi 10 novembre 2020 Statut Membre Dernière intervention 14 octobre 2021 - 12 nov. 2020 à 06:26
A voir également:
- Amandine utilise une application pour gérer les inscriptions aux activités de son club. dans le schéma (structure) de la base de données de l’application représenté ci-dessous : de quoi « telephone » est-il le nom ? de quoi « inscriptions » est-il le nom ? associez chaque terme avec un attribut, une donnée, un enregistrement, une table, une valeur ou une variable.
- Téléphone - Guide
- Schéma téléphone oublié - Guide
- Application mobile - Guide
- C'est quoi le cache d'une application - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
3 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
10 nov. 2020 à 22:33
10 nov. 2020 à 22:33
Bonjour,
Tes explications et les quelques lignes de code que tu donnes ne sont pas suffisantes pour bien comprendre.
Il faudrait voir ton code dans son ensemble pour pouvoir tester et reproduire le bug.
Tes explications et les quelques lignes de code que tu donnes ne sont pas suffisantes pour bien comprendre.
Il faudrait voir ton code dans son ensemble pour pouvoir tester et reproduire le bug.
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
11 nov. 2020 à 10:21
11 nov. 2020 à 10:21
Tout cela est... très peu conventionnel.
Java est un langage objet et clairement ici ce dont tu as besoin c'est de faire des objets.
Exemple :
Pour reprendre une partie de ton code ça pourrait donner ceci :
Toutefois je trouve les tableaux peu adapté à ton code, il faudrait se servir davantage de ton numéro d'item, pour t'en servir comme clé au sein d'une Map. Exemple :
Remarque : tu devrais aussi créer des méthodes pour éviter les copier-coller, ce qui permet également de clarifier le code, car chaque petite portion de code est ainsi clairement identifiée. Exemple :
Quant à ta recherche, je ne vais pas regarder pourquoi elle est fausse avec les tableaux, même si c'est très certainement lié à une confusion entre tes multiples indices i, idx, ctr...
Je pense qu'il faut procéder en deux temps : d'abord lister les articles qui correspondent à un terme de recherche, puis choisir un de ces articles pour savoir lequel tu vas modifier, sinon effectivement tu risques d'en modifier trop.
Dans la classe Article tu peux faire une petite méthode comme ça :
Puis dans ton main, dans un des case du switch, tu fais la recherche :
Et dans un autre case du switch, tu fais une modification, par exemple la description :
Remarque : dans un switch tu n'est pas obligé de mettre uniquement des entiers, tu peux par exemple mettre des String ce qui permet de faciliter les actions utilisateurs. De plus il vaudrait mieux que chaque case renvoie à une méthode séparée pour alléger le main et séparer les variables. Exemple :
Le code complet pour tester :
Exemple d'exécution :
Java est un langage objet et clairement ici ce dont tu as besoin c'est de faire des objets.
Exemple :
class Article { int numItem; String description; public String toString(){ return "[numItem=" + numItem + ", description=" + description + "]"; } }
Pour reprendre une partie de ton code ça pourrait donner ceci :
Article[] articles = new Article[100]; case 1: Article article = new Article(); System.out.println("veuiller saisir le numero d'item"); article.numItem = clavier.nextInt(); clavier.nextLine(); System.out.println("veuiller saisir la description"); article.description = clavier.nextLine(); articles[ctr] = article; ctr++; break;
Toutefois je trouve les tableaux peu adapté à ton code, il faudrait se servir davantage de ton numéro d'item, pour t'en servir comme clé au sein d'une Map. Exemple :
Map<Integer, Article> articles = new TreeMap<>(); case 1: Article article = new Article(); System.out.println("veuiller saisir le numero d'item"); article.numItem = clavier.nextInt(); clavier.nextLine(); System.out.println("veuiller saisir la description"); article.description = clavier.nextLine(); articles.put(article.numItem, article); break;
Remarque : tu devrais aussi créer des méthodes pour éviter les copier-coller, ce qui permet également de clarifier le code, car chaque petite portion de code est ainsi clairement identifiée. Exemple :
private static final Scanner clavier = new Scanner(System.in); private static String nextString(String label) { System.out.print("Veuillez saisir " + label + " (texte) : "); return clavier.nextLine(); } private static int nextInt(String label) { System.out.print("Veuillez saisir " + label + " (entier) : "); return Integer.parseInt(clavier.nextLine()); }
case 1: Article article = new Article(); article.numItem = nextInt("le numero d'item"); article.description = nextString("la description");
Quant à ta recherche, je ne vais pas regarder pourquoi elle est fausse avec les tableaux, même si c'est très certainement lié à une confusion entre tes multiples indices i, idx, ctr...
Je pense qu'il faut procéder en deux temps : d'abord lister les articles qui correspondent à un terme de recherche, puis choisir un de ces articles pour savoir lequel tu vas modifier, sinon effectivement tu risques d'en modifier trop.
Dans la classe Article tu peux faire une petite méthode comme ça :
public boolean match(String token) { return token.equalsIgnoreCase(description) || token.equals(String.valueOf(numItem)); }
Puis dans ton main, dans un des case du switch, tu fais la recherche :
String attribut = nextString("l'attribut de recherche"); articles.forEach((numItem, article) -> { if (article.match(attribut)) System.out.println("Correspondance avec " + article); });
Et dans un autre case du switch, tu fais une modification, par exemple la description :
int numItem = nextInt("le numéro d'item à modifier"); Article article = articles.get(numItem); System.out.println("La description est : " + article.description); article.description = nextString("la nouvelle description");
Remarque : dans un switch tu n'est pas obligé de mettre uniquement des entiers, tu peux par exemple mettre des String ce qui permet de faciliter les actions utilisateurs. De plus il vaudrait mieux que chaque case renvoie à une méthode séparée pour alléger le main et séparer les variables. Exemple :
switch (nextString("une action")) { case "add": add(); break; case "search": search(); break; case "modifDesc": modifDesc(); break; case "exit": return; }
Le code complet pour tester :
package com.company; import java.util.*; class Article { int numItem; String description; public String toString(){ return "[numItem=" + numItem + ", description=" + description + "]"; } public boolean match(String token) { return token.equalsIgnoreCase(description) || token.equals(String.valueOf(numItem)); } } public class Main { private static final Scanner clavier = new Scanner(System.in); private static String nextString(String label) { System.out.print("Veuillez saisir " + label + " (texte) : "); return clavier.nextLine(); } private static int nextInt(String label) { System.out.print("Veuillez saisir " + label + " (entier) : "); return Integer.parseInt(clavier.nextLine()); } private static Map<Integer, Article> articles = new TreeMap<>(); private static void add(){ Article article = new Article(); article.numItem = nextInt("le numero d'item"); article.description = nextString("la description"); articles.put(article.numItem, article); } private static void search(){ String attribut = nextString("l'attribut de recherche"); articles.forEach((numItem, article) -> { if (article.match(attribut)) System.out.println("Correspondance avec " + article); }); } private static void modifDesc(){ int numItem = nextInt("le numéro d'item à modifier"); Article article = articles.get(numItem); System.out.println("La description est : " + article.description); article.description = nextString("la nouvelle description"); } public static void main(String[] args) { while (true) { System.out.println("# add ajouter un article"); System.out.println("# search chercher un article"); System.out.println("# modifDesc modifier la description"); System.out.println("# exit quitter le programme"); switch (nextString("une action")) { case "add": add(); break; case "search": search(); break; case "modifDesc": modifDesc(); break; case "exit": return; } } } }
Exemple d'exécution :
Veuillez saisir une action (texte) : add Veuillez saisir le numero d'item (entier) : 42 Veuillez saisir la description (texte) : toto Veuillez saisir une action (texte) : search Veuillez saisir l'attribut de recherche (texte) : toto Correspondance avec [numItem=42, description=toto] Veuillez saisir une action (texte) : modifDesc Veuillez saisir le numéro d'item à modifier (entier) : 42 La description est : toto Veuillez saisir la nouvelle description (texte) : tata Veuillez saisir une action (texte) : search Veuillez saisir l'attribut de recherche (texte) : 42 Correspondance avec [numItem=42, description=tata] Veuillez saisir une action (texte) : exit
mimi19911980
Messages postés
22
Date d'inscription
mardi 10 novembre 2020
Statut
Membre
Dernière intervention
14 octobre 2021
Modifié le 12 nov. 2020 à 07:09
Modifié le 12 nov. 2020 à 07:09
merci pour votre réponse
svp j'ai ce code la pour la modification de du valeur du tableau. Le problème c'est que il modifie juste la première ligne il modifie pas les autre
c'est quoi le problème svp
svp j'ai ce code la pour la modification de du valeur du tableau. Le problème c'est que il modifie juste la première ligne il modifie pas les autre
c'est quoi le problème svp
System.out.print("Saisir le numero que vous vouler changer : "); numItem[ctr] = clavier.nextInt(); System.out.print("Saisir la quqntite que vous vouler changer : "); attribut = String.valueOf(clavier.nextInt()); trouve = false; idx = 0; while ((trouve == false) && (idx < ctr)) { for (i = 0; i < ctr; i++) { if (Objects.equals(numItem[ctr], numItem[idx])) if (attribut.equalsIgnoreCase(Integer.toString((int) quantite[idx]))) trouve = true; else { idx++; i++; } if ((trouve) && (Objects.equals(numItem[ctr], numItem[idx]))) { System.out.print("Par quel quantité voulez-vous la remplacer"); //if (attribut.equalsIgnoreCase(Integer.toString(numItem[idx]))) // numItem[idx] = Integer.parseInt(clavier.nextLine()); if ((attribut.equalsIgnoreCase(Integer.toString((int) quantite[idx]))) && (Objects.equals(numItem[ctr], numItem[idx]))) { quantite[idx] = clavier.nextInt(); clavier.nextLine(); } } } } System.out.println("Le terme n'existe pas");
Modifié le 11 nov. 2020 à 08:57
Modifié le 11 nov. 2020 à 08:56