Modificqation des attribut
Fermé
mimi19911980
Messages postés
26
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 26 Date d'inscription mardi 10 novembre 2020 Statut Membre Dernière intervention 14 octobre 2021 - 12 nov. 2020 à 06:26
mimi19911980 Messages postés 26 Date d'inscription mardi 10 novembre 2020 Statut Membre Dernière intervention 14 octobre 2021 - 12 nov. 2020 à 06:26
A voir également:
- Modificqation des attribut
- Attribut changer - Télécharger - Divers Utilitaires
- Aucun attribut manifest principal ✓ - Forum Java
- Attribut archive ✓ - Forum Bureautique
- Une erreur s'est produite en appliquant des attributs au fichier - Forum Windows
- Vous devez disposer des droits d'administrateur pour modifier ces attributs - Guide
3 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
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
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
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
26
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
System.out.print("Saisir l'attribut que vous voulez changer : "); attribut = clavier.nextLine(); trouve = false; idx = 0; while ((trouve == false) && (idx < ctr)) { for (i = 0; i < ctr; i++) { if ((attribut.equalsIgnoreCase(descirption[idx])) || (attribut.equalsIgnoreCase(Integer.toString(numItem[idx])))) trouve = true; else { idx++; i++; } if (trouve) { System.out.print("Par quel terme voulez-vous le remplacer"); if (attribut.equalsIgnoreCase(Integer.toString(numItem[idx]))) numItem[idx] = Integer.parseInt(clavier.nextLine()); if ((attribut.equalsIgnoreCase(descirption[idx]))) { descirption[idx] = clavier.nextLine(); } } else System.out.println("Le terme n'existe pas"); break;Modifié le 11 nov. 2020 à 08:56
package com.company; import java.util.*; import java.util.InputMismatchException; public class Main { public static void main(String[] args) { Scanner clavier = new Scanner(System.in); int i; int numItem[] = new int[100]; String descirption[] = new String[100]; String sexe[] = new String[100]; double prixReviens[] = new double[100]; double prixVente[] = new double[100]; int quantite[] = new int[100]; int qteMin[] = new int[100]; int origine[] = new int[100]; boolean fin = false; boolean statut[] = new boolean[100]; String input; int choix; int idx; String attribut; //String numero; boolean trouve, trouve1; int ctr = 0; while (fin == false) { System.out.println("1:Ajouter un vetememt"); System.out.println("22:affichage" ); System.out.println("2:Modifier la quqntitÉ en inventaire"); System.out.println("3:Modifier le prix de revient"); System.out.println("4:modifier le prix de vente"); System.out.println("5:Modifier le statut"); System.out.println("6:Supprimer un vetememt"); System.out.println("7:liste des vetement actif"); System.out.println("8:liste des vetememt perimÉ"); System.out.println("9:liste de vetememt homme" ) System.out.println("10:liste de vetemetn femme"); System.out.println("11:liste de vetememt unisexe"); System.out.println("12:Liste des item dont la quantite en inventaire et moindre aue la quqntite minimale"); System.out.println("13:la liste des vêtements soit fabriqués par son entreprise, soit achetés auprès de ses fournisseurst"); System.out.println("14:la valeur totale de l’inventaire en fonction du prix de vente"); System.out.println("15:la valeur totale de l’inventaire en fonction du prix de revient"); input = clavier.nextLine(); choix = Integer.parseInt(input); switch (choix) { case 0: fin = true; break; case 1: System.out.println("veuiller saisir le numero d'item"); numItem[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuiller saisir la description"); descirption[ctr] = clavier.nextLine(); System.out.println("veuiller saisir le sexe"); sexe[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuiller saisir le prix de revient"); prixReviens[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuiller saisir le prix de vente"); prixVente[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuillez saisir la quantite"); quantite[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuillez saisir la quantite minimale"); qteMin[ctr] = clavier.nextInt(); clavier.nextLine(); System.out.println("veuillez saisir l'origine"); origine[ctr] = clavier.nextInt(); clavier.nextLine(); ctr++; break; case 2: for (i = 0; i < ctr; i++) { System.out.println(+(i + 1) + "." + "le numero d'item: " + numItem[i] + " | " + "description: " + descirption[i] + " | " + "sexe: " + sexe[i] + "| " + "prix de revient: " + prixReviens[i] + " | " + " prix de vente: " + prixVente[i] + " | " + "quqntite: " + quantite[i] + " | " + "quantite minimale: " + qteMin[i] + " | " + "origine: " + origine[i])+" | "+"statut: "+statut; /*System.out.println("description de l'item " + ": " + descirption[i]); System.out.println("sexe " + sexe[i]); System.out.println( " prix de revient " + prixReviens[i]); System.out.println(" prix de vente " + prixVente[i]); System.out.println(" quantite en inventaire " + quantite[i]); System.out.println(" quqntite mimimale " + qteMin[i]); System.out.println(" origine " + origine[i]);*/ } break; case 3: System.out.print("Saisir l'attribut que vous voulez changer : "); attribut = clavier.nextLine(); trouve = false; idx = 0; while ((trouve == false) && (idx < ctr)) { for (i = 0; i < ctr; i++) { if ((attribut.equalsIgnoreCase(descirption[idx])) || (attribut.equalsIgnoreCase(Integer.toString(numItem[idx])))) trouve = true; else { idx++; i++; } if (trouve) { System.out.print("Par quel terme voulez-vous le remplacer"); if (attribut.equalsIgnoreCase(Integer.toString(numItem[idx]))) numItem[idx] = Integer.parseInt(clavier.nextLine()); if ((attribut.equalsIgnoreCase(descirption[idx]))) { descirption[idx] = clavier.nextLine(); } } else System.out.println("Le terme n'existe pas"); break; } } }