Fonction qui transforme un String en NumeroTel, ajout annuaire
Résolu
hedii
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
hedii Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
hedii Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je ne sais comment modfier ma methode actionPerformed pour utiliser la fonction stringToNumeroTel puis la fonction ajouter.
Voici la classe et la methode ajouter qui est dans la classe Annuaire, il existe d'autres classes, en particulier NumeroTel:
class Bouton1 implements ActionListener {
/** Creates a new instance of Bouton1 */
public Bouton1() {
}
public NumeroTel stringToNumeroTel(String numero, String delimiteur)
throws java.util.NoSuchElementException {
java.util.StringTokenizer token = new java.util.StringTokenizer(numero, delimiteur);
if (token.countTokens()!=5)
throw new java.util.NoSuchElementException("Format de Numero de Tel incorrect");
int i1 = (new Integer(token.nextToken())).intValue();
int i2 = (new Integer(token.nextToken())).intValue();
int i3 = (new Integer(token.nextToken())).intValue();
int i4 = (new Integer(token.nextToken())).intValue();
int i5 = (new Integer(token.nextToken())).intValue();
return new NumeroTel(i1, i2, i3, i4, i5);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Ajout abonne")) {
Annuaire annuaire = new Annuaire();
String nom = abonne.getText();
String num = numero.getText();
}
}
}
________________________________________________________________________
pubic class Annuaire {
Hashtable parNoms = new Hashtable();
Hashtable parNumeros = new Hashtable();
public Annuaire() {
}
public void ajouter(String nom, NumeroTel numero) {
parNoms.put(nom, numero);
parNumeros.put(numero, nom);
}
[...]
}
________________________________________________________________________
public class NumeroTel {
private NumeroTel numero;
private int a;
private int b;
private int c;
private int d;
private int e;
/** Creates a new instance of NumeroTel */
public NumeroTel(int a,int b,int c,int d,int e) {
}
public boolean Comparaison (NumeroTel numero1) {
if (numero.equals(numero1)){
return true;
}
else {
return false;
}
}
public NumeroTel getNumero() {
return numero;
}
public String toString() {
return ""+numero;
}
}
Voici la classe et la methode ajouter qui est dans la classe Annuaire, il existe d'autres classes, en particulier NumeroTel:
class Bouton1 implements ActionListener {
/** Creates a new instance of Bouton1 */
public Bouton1() {
}
public NumeroTel stringToNumeroTel(String numero, String delimiteur)
throws java.util.NoSuchElementException {
java.util.StringTokenizer token = new java.util.StringTokenizer(numero, delimiteur);
if (token.countTokens()!=5)
throw new java.util.NoSuchElementException("Format de Numero de Tel incorrect");
int i1 = (new Integer(token.nextToken())).intValue();
int i2 = (new Integer(token.nextToken())).intValue();
int i3 = (new Integer(token.nextToken())).intValue();
int i4 = (new Integer(token.nextToken())).intValue();
int i5 = (new Integer(token.nextToken())).intValue();
return new NumeroTel(i1, i2, i3, i4, i5);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Ajout abonne")) {
Annuaire annuaire = new Annuaire();
String nom = abonne.getText();
String num = numero.getText();
}
}
}
________________________________________________________________________
pubic class Annuaire {
Hashtable parNoms = new Hashtable();
Hashtable parNumeros = new Hashtable();
public Annuaire() {
}
public void ajouter(String nom, NumeroTel numero) {
parNoms.put(nom, numero);
parNumeros.put(numero, nom);
}
[...]
}
________________________________________________________________________
public class NumeroTel {
private NumeroTel numero;
private int a;
private int b;
private int c;
private int d;
private int e;
/** Creates a new instance of NumeroTel */
public NumeroTel(int a,int b,int c,int d,int e) {
}
public boolean Comparaison (NumeroTel numero1) {
if (numero.equals(numero1)){
return true;
}
else {
return false;
}
}
public NumeroTel getNumero() {
return numero;
}
public String toString() {
return ""+numero;
}
}
A voir également:
- Fonction qui transforme un String en NumeroTel, ajout annuaire
- Fonction si et - Guide
- Annuaire inversé - Guide
- Demande d'ajout snap qui disparait ✓ - Forum Snapchat
- Annuaire inversé espagne - Forum Mobile
- Annuaire inversé suisse ✓ - Forum Mail
2 réponses
L'un des intérêts d'une classe est de stocker une valeur en mémoire en limitant autant que possible la taille de cette valeur.
Par exemple un numéro de téléphone à 10 chiffres :
Il peut-être représenté par un String (ou un char[]) dans ce cas il y a autant de caractères que de chiffres, donc une taille de 10 octets.
Il y a également la possibilité comme tu l'as fait de faire 5 entiers, mais tu utilises des int, qui font 4 octets chacun, ce qui te fait une représentation à 20 octets.
Dans la mesure où tes entiers doivent tous être entre 00 et 99, tu pourrais utiliser des byte à la place des int, donc 5 byte ce qui ferait une représentation à 5 octets.
Encore mieux, en France et dans d'autres pays, tous les numéros commencent par 0, du coup ce n'est pas la peine de le stocker et on peux se limiter aux 9 chiffres significatifs, qui rentrent facilement dans un seul int, donc une représentation à 4 octets.
Ainsi, au lieu d'avoir 5 int tu peux t'en sortir avec 1 seul ! C'est économe en mémoire et plus facile à gérer vu que tu n'auras qu'un seul attribut privé.
PS. je ne comprends pas ce que tu veux faire avec ton attribut "NumeroTel numero", à mon avis il ne sert à rien, tu dois confondre avec this.
Le gros avantage de cette représentation c'est pour tes Hashtable parce que tu ne l'as pas géré du tout dans ton code, mais le hashCode de ta classe NumeroTel doit être redéfini, et puisque c'est un int, ici c'est immédiat, il suffit de renvoyer l'attribut numero qui garantie une bonne valeur de hachage !
Par exemple un numéro de téléphone à 10 chiffres :
Il peut-être représenté par un String (ou un char[]) dans ce cas il y a autant de caractères que de chiffres, donc une taille de 10 octets.
Il y a également la possibilité comme tu l'as fait de faire 5 entiers, mais tu utilises des int, qui font 4 octets chacun, ce qui te fait une représentation à 20 octets.
Dans la mesure où tes entiers doivent tous être entre 00 et 99, tu pourrais utiliser des byte à la place des int, donc 5 byte ce qui ferait une représentation à 5 octets.
Encore mieux, en France et dans d'autres pays, tous les numéros commencent par 0, du coup ce n'est pas la peine de le stocker et on peux se limiter aux 9 chiffres significatifs, qui rentrent facilement dans un seul int, donc une représentation à 4 octets.
Ainsi, au lieu d'avoir 5 int tu peux t'en sortir avec 1 seul ! C'est économe en mémoire et plus facile à gérer vu que tu n'auras qu'un seul attribut privé.
PS. je ne comprends pas ce que tu veux faire avec ton attribut "NumeroTel numero", à mon avis il ne sert à rien, tu dois confondre avec this.
public class NumeroTel { /** * 9 chiffres significatifs du numéro de téléphone (le 0 est implicite) * Exemple : "01.23.45.67.89" --> numero=123456789 */ private final int numero;
Le gros avantage de cette représentation c'est pour tes Hashtable parce que tu ne l'as pas géré du tout dans ton code, mais le hashCode de ta classe NumeroTel doit être redéfini, et puisque c'est un int, ici c'est immédiat, il suffit de renvoyer l'attribut numero qui garantie une bonne valeur de hachage !
@Override public int hashCode() { return numero; }La confiance n'exclut pas le contrôle