Controle de saisie en java

Signaler
Messages postés
49
Date d'inscription
mercredi 4 janvier 2012
Statut
Membre
Dernière intervention
24 novembre 2012
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
salut,

je veux savoir comment comparer deux chaine de caractère

en faite j'ai une class nommée facture elle contient un attribut libelle

ma condition de test est que je ne dois pas avoir deux facture avec le même nom ( même libelle)

le contrôle sur les 13 premiers caractères


merci d'avance

5 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Où en es tu ? Peux tu accepter les réponses qui t'on aidé ?
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
Salut,

D'après ce que j'ai compris :

Tu peux utiliser substring pour extraire les 13 premiers caractères et equals pour comparer les deux chaînes extraites.

String lbl1 = f1.getLibelle();
String lbl2 = f2.getLibelle();
if (lbl1.length() > 13) {
lbl1 = lbl1.substring(0, 13);
}
if (lbl2.length() > 13) {
lbl2 = lbl2.substring(0, 13);
}
if (lbl1.equals(lbl2)) {
throw new Exception("blablabla même libellé blablabla");
}


J'ai saisi le code directement dans la zone de texte, ce n'est pas à prendre pour argent comptant ;)
Messages postés
49
Date d'inscription
mercredi 4 janvier 2012
Statut
Membre
Dernière intervention
24 novembre 2012

merci pour la réponse
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Salut,

Dans ta classe nomée facture, je te conseil d'implémenter Comparable pour faire les choses proprement :


public class Facture implements Comparable<Facture> {

private int numero;
private String libelle;

public Facture(int numero, String libelle) {
this.numero = numero;
this.libelle = libelle;
}

public String getLibelle() {
return libelle;
}

@Override
public int compareTo(Facture f) {
return getLibelle().trim().substring(0, 13).compareTo(f.getLibelle().trim().substring(0, 13));
}

}

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Si vraiment tu veux faire un truc propre, tu peux faire ca :


public class Facture implements Comparable<Facture> {

private int numero;
private String libelle;

public Facture(int numero, String libelle) {
this.numero = numero;
this.libelle = libelle;
}

public String getLibelle() {
return libelle;
}

@Override
public int compareTo(Facture f) {
return getLibelle().trim().substring(0, 12).compareTo(f.getLibelle().trim().substring(0, 12));
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result prime * result + ((libelle null) ? 0 : libelle.hashCode());
result = prime * result + numero;
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj){
return true;
}
if (obj == null){
return false;
}
if (getClass() != obj.getClass()){
return false;
}
else {
Facture other = (Facture) obj;
return this.compareTo(other)==0;
}
}

public static void main(String[] args){
Facture f1 = new Facture(1, "00000000000001");
Facture f2 = new Facture(1, "00000000000002");
Facture f3 = new Facture(1, "00000000000500");
System.out.println(f1.equals(f2));
System.out.println(f1.equals(f3));
}

}