Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1603 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Méthode pour tester si une variable est initialisée ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Méthode pour tester si une variable est initialisée ?

n°226374
kfman
Credo quia absurdum
Posté le 10-10-2002 à 20:58:39  profilanswer
 

Bonjour,
 
Je suis en train d'écrire un petit prog Java où j'utilise les arguments args[].
 
Voici le début:
 
public class Test {
 
public static void main (String args[]) {
Infos Uneinfo = new Infos(args[0],Integer.parseInt[args[1]);
...
 
 
Dans la classe Infos, j'ai écris 3 constructeurs selon le nombres d'arguments passés.
 
public class Infos {
 
public Infos() {...}
public Infos(String Nomville) {...}
public Infos(String Nomville, Int Habitant) {...}
...
 
 
A l'éxecution, je me prends une ArrayIndexOutOfBoundException.
Ce qui me parait logique vu que je tente d'utiliser des variables qui sont dans certains cas non initialisées.
 
Je voudrais donc savoir s'il existe une méthode permettant de renvoyer l'argument s'il existe ou rien dans la cas contraire, dy style:
 
Infos Uneinfo = new Infos(args[0].ifExist(),Integer.parseInt[args[1]);
 
Merci d'avance...
 
 


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
mood
Publicité
Posté le 10-10-2002 à 20:58:39  profilanswer
 

n°226376
gm_superst​ar
Appelez-moi Super
Posté le 10-10-2002 à 21:05:48  profilanswer
 

Ben tu testes la longueur de args[]...

n°226379
kfman
Credo quia absurdum
Posté le 10-10-2002 à 21:11:34  profilanswer
 

J'y ai pensé mais ça me fait 3 if, je voudrais savoir si une méthode testant la présence existe ?
 


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
n°226403
Profil sup​primé
Posté le 10-10-2002 à 21:47:04  answer
 

tu fais une gestion d'execption avec un try{ ton truc }
puis un  
catch( nom de l'exception ) { le bordel si ton truc n'est pas initialisé }
 
 
 
ne me demande pas trop de détails, je suis un manche pour ce genre de trucs
ton exception sera "IndexOutOfBoundsExeption"

n°226405
gm_superst​ar
Appelez-moi Super
Posté le 10-10-2002 à 21:53:09  profilanswer
 

kfman a écrit a écrit :

J'y ai pensé mais ça me fait 3 if, je voudrais savoir si une méthode testant la présence existe ?



Mouais, enfin c'est franchement pas la mort de faire 3 if... Sinon passe par un switch ... case :D

n°226410
--greg--
Posté le 10-10-2002 à 22:03:18  profilanswer
 

SirJeannot a écrit a écrit :

tu fais une gestion d'execption avec un try{ ton truc }
puis un  
catch( nom de l'exception ) { le bordel si ton truc n'est pas initialisé }
 
 
 
ne me demande pas trop de détails, je suis un manche pour ce genre de trucs
ton exception sera "IndexOutOfBoundsExeption"



ARGH  
 
NE L'ECOUTEZ PAS


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226414
Profil sup​primé
Posté le 10-10-2002 à 22:09:25  answer
 

--greg-- a écrit a écrit :

ARGH  
 
NE L'ECOUTEZ PAS



[:rosebud]

n°226422
bobuse
Posté le 10-10-2002 à 22:20:33  profilanswer
 

Tu fais 3 if et puis c'est tout !
 
Des oifs en voulant faire du "beau" code, tu perds en efficacité ...
Comment agir différemment en fonction de trois valeurs possibles ...
Y a pas à aller cherche bien loin, tu fais 3 if, ou un switch ... et c'est tout !!
 
Et surtout pas d'exception ...
 
l'utilisation des exceptions doit rester exceptionnelle


Message édité par bobuse le 10-10-2002 à 22:20:46
n°226429
kfman
Credo quia absurdum
Posté le 10-10-2002 à 22:30:05  profilanswer
 

bobuse a écrit a écrit :

Tu fais 3 if et puis c'est tout !
 
Des oifs en voulant faire du "beau" code, tu perds en efficacité ...
Comment agir différemment en fonction de trois valeurs possibles ...
Y a pas à aller cherche bien loin, tu fais 3 if, ou un switch ... et c'est tout !!
 
Et surtout pas d'exception ...
 
l'utilisation des exceptions doit rester exceptionnelle




 
 
Oui papa :D
 
Mais pour ma culture générale, j'aimerai qd même savoir si la méthode existe :D


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
n°226433
bobuse
Posté le 10-10-2002 à 22:35:15  profilanswer
 

:??: J'ai du mal à voir l'utilité d'une telle fonction ...
 
sinon, ce que tu peux faire, c'est faire un constructeur qui prend en paramètre ton tableau de paramètres ... :/

mood
Publicité
Posté le 10-10-2002 à 22:35:15  profilanswer
 

n°226450
kfman
Credo quia absurdum
Posté le 10-10-2002 à 22:46:38  profilanswer
 

bobuse a écrit a écrit :

 :??: J'ai du mal à voir l'utilité d'une telle fonction ...
 
sinon, ce que tu peux faire, c'est faire un constructeur qui prend en paramètre ton tableau de paramètres ... :/




 
En fait, je veux envoyer le paramètre seulement s'il existe... ou ne rien envoyez sinon.
 


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
n°226504
benou
Posté le 11-10-2002 à 00:09:58  profilanswer
 

kfman a écrit a écrit :

 
En fait, je veux envoyer le paramètre seulement s'il existe... ou ne rien envoyez sinon.




non ca n'existe pas. Et c'est pas plus mal !

n°226508
benou
Posté le 11-10-2002 à 00:13:09  profilanswer
 

SirJeannot a écrit a écrit :

 [:rosebud]  




 [:benou] c'est quoi cet histoire ???
 
Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum.
 
le prochain coup tu t'abstient de poster !

n°226514
--greg--
Posté le 11-10-2002 à 01:01:59  profilanswer
 

benou a écrit a écrit :

 
 [:benou] c'est quoi cet histoire ???
 
Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum.
 
le prochain coup tu t'abstient de poster !
 



moi je mdemande s'il etait pas serieux :o
y'a des gens qui font vraiment ça [:totoz] si si :/


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226561
Profil sup​primé
Posté le 11-10-2002 à 09:24:07  answer
 

benou a écrit a écrit :

 
 [:benou] c'est quoi cet histoire ???
 
Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum.
 
le prochain coup tu t'abstient de poster !
 



je fais comme ca aussi  :D
edit: en général, j'initialise la variable avant de l'utiliser  :o , pour voir si elle a été modifié par autre chose  :kaola:


Message édité par Profil supprimé le 11-10-2002 à 09:24:54
n°226563
--greg--
Posté le 11-10-2002 à 09:24:35  profilanswer
 

SirJeannot a écrit a écrit :

je fais comme ca aussi  :D  



[:totoz]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226566
Profil sup​primé
Posté le 11-10-2002 à 09:27:04  answer
 

--greg-- a écrit a écrit :

[:totoz]



mais chui un pied sur ce que j'ai dit, mais c'est une idée qui me venait...
ceci dit je préfère mon bidouillage  :D

n°226571
--greg--
Posté le 11-10-2002 à 09:32:45  profilanswer
 

SirJeannot a écrit a écrit :

mais chui un pied sur ce que j'ai dit, mais c'est une idée qui me venait...
ceci dit je préfère mon bidouillage  :D  



[:tapai]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226574
Profil sup​primé
Posté le 11-10-2002 à 09:34:40  answer
 

--greg-- a écrit a écrit :

[:tapai]



:hap:
je parlais de celle là
edit: en général, j'initialise la variable avant de l'utiliser  :o , pour voir si elle a été modifié par autre chose  
 
ceci dit, mis à part à gestion d'erreur, je ne voyais pas autre chose   :( , dsl

n°226575
benou
Posté le 11-10-2002 à 09:34:59  profilanswer
 

--greg-- a écrit a écrit :

[:totoz]




ouais ... ca fait peur !  :(

n°226578
Profil sup​primé
Posté le 11-10-2002 à 09:38:31  answer
 

benou a écrit a écrit :

 
ouais ... ca fait peur !  :(  



dsl, je ne suis pas un maitre en java non plus
ceci dit j'aurai trouvé nimporte quel moyen pour ne pas utiliser les exceptions :D

n°226617
phenixl
Posté le 11-10-2002 à 10:31:19  profilanswer
 

--greg-- a écrit a écrit :

ARGH  
 
NE L'ECOUTEZ PAS




 
Mouais et bien moi je dirais qu'il a tout a fait raison (dans l'absolu) si tu estimes que le cas ou la variable n'est pas initialisee est rare et que tu cherches a gagner en efficacite en evitant certains traitements : c'est une approche optimiste du probleme.
 
La gestion de l'exception est lourde oui, mais vu qu'elle arrive rarement on prefere s'eviter un tas de ifs (meme 3 s'ils sont executes plusieurs dizaines de milliers de fois) inutiles la pluspart du temps.
 
Enfin bon la on retombe dans l'optimisation. ;)
 
Sinon : je ferais egalement ces 3 if...

n°226621
phenixl
Posté le 11-10-2002 à 10:39:38  profilanswer
 

bobuse a écrit a écrit :

 
l'utilisation des exceptions doit rester exceptionnelle




 
Non : elles doivent etre utilisees a bon escient et il faut pouvoir justifier leur utilisation.
 
La seule chose qu'il faut savoir est qu'une exception generee signifie qu'une usine a gaz se met en route. Si l'on n'y fait pas attention les performances chuttent etc...
 
La programmation par exceptions est extremement utile et permet de gagner en efficacite, ainsi que de simplifier certains problemes dans des cas bien precis.
 
Sans rester de le cas precis qui nous interesse, je trouve que les developpeurs en general on tendance a ne pas assez utiliser des exceptions "fait maison" pour regler leurs problemes.
 
Mais ca c'est comme le reste : IMHO ;)

n°226658
benou
Posté le 11-10-2002 à 11:42:38  profilanswer
 

phenixl a écrit a écrit :

 
 
Mouais et bien moi je dirais qu'il a tout a fait raison (dans l'absolu) si tu estimes que le cas ou la variable n'est pas initialisee est rare et que tu cherches a gagner en efficacite en evitant certains traitements : c'est une approche optimiste du probleme.




Les exceptions sont pas faites pour améliorer les perfs !
 
les utiliser dans ce but est une abération !

n°226664
BifaceMcLe​OD
The HighGlandeur
Posté le 11-10-2002 à 11:53:24  profilanswer
 

Pourtant, les spécialistes te confirmeront que le code :

Code :
  1. for (int i = 0; i < 100000; i++) {
  2.   tab = ....
  3. }

est moins rapide que :

Code :
  1. int  i = 0;
  2. try {
  3.   while (true) {
  4.     tab[i] = ....
  5.     i++;
  6.   }
  7. }
  8. catch (ArrayIndexOutOfBoundsException e) {
  9.   // Ne rien faire, on a juste fini de parcourir le tableau.
  10. }


 
edit> Ce n'est pas que je tienne absolument à être désagréable, mais "[i]aberration" s'écrit avec deux 'r'... ;)


Message édité par BifaceMcLeOD le 11-10-2002 à 11:54:31
n°226665
BifaceMcLe​OD
The HighGlandeur
Posté le 11-10-2002 à 12:01:59  profilanswer
 

Cependant, benou, je suis d'accord qu'utiliser une exception pour sortir d'une boucle, c'est franchement sale. Par contre, cela peut être bon à savoir pour détecter les tests inutiles. Du genre :

Code :
  1. class ListOfPerson {
  2.   private List  maListe;
  3.   ...
  4.   protected Person getPerson(int index) {
  5.     if (index < 0  ||  index >= this.maListe.size()) {
  6.       throw new MonException(...);
  7.     }
  8.     return (Person) this.maListe.get(index);
  9.   }
  10. }


Ici, le test sur l'index est probablement inutile, surtout si la probabilité d'erreur est vraiment faible (vous remarquerez que la méthode n'est pas publique). Il est sans doute préférable d'écrire :

Code :
  1. class ListOfPerson {
  2.   private List  maListe;
  3.   ...
  4.   protected Person getPerson(int index) {
  5.     try {
  6.       return (Person) this.maListe.get(index);
  7.     }
  8.     catch (ArrayIndexOutOfBoundsException e) {
  9.       throw new MonException(...);
  10.     }
  11.   }
  12. }

n°226683
bobuse
Posté le 11-10-2002 à 13:21:04  profilanswer
 

:heink: Ha bon ? T'as des sources ?
Et c'est valables qqsoit i ? ... bizarre quand même !

n°226691
darklord
You're welcome
Posté le 11-10-2002 à 13:42:32  profilanswer
 

bobuse a écrit a écrit :

:heink: Ha bon ? T'as des sources ?
Et c'est valables qqsoit i ? ... bizarre quand même !




 
oui et non. Y a un test en moins à chaque itération. Ca peut etre non négligeables si i est grand.


---------------
Just because you feel good does not make you right
n°226707
BifaceMcLe​OD
The HighGlandeur
Posté le 11-10-2002 à 14:04:33  profilanswer
 

DarkLord> Rien à ajouter.  :jap:  
 
bobuse> Tu remarqueras que le nombre d'itérations dans mes 2 bouts de code était 100 000 (cent mille).

n°226739
phenixl
Posté le 11-10-2002 à 14:38:53  profilanswer
 

BifaceMcLeOD a écrit a écrit :

Pourtant, les spécialistes te confirmeront que le code :

Code :
  1. for (int i = 0; i < 100000; i++) {
  2.   tab = ....
  3. }

est moins rapide que :

Code :
  1. int  i = 0;
  2. try {
  3.   while (true) {
  4.     tab[i] = ....
  5.     i++;
  6.   }
  7. }
  8. catch (ArrayIndexOutOfBoundsException e) {
  9.   // Ne rien faire, on a juste fini de parcourir le tableau.
  10. }


 
edit> Ce n'est pas que je tienne absolument à être désagréable, mais "[i]aberration" s'écrit avec deux 'r'... ;)




 
Hum...
 
Il me semble que tu ne comprends pas ce que j'ai ecris...
 
Si tu as un array de 10000 objets et qu'une fois sur 100000 une case n'est pas initialisee et tu te choppes un NullPointerException je t'assure que tu as meilleurs temps de catch l'exception plutot que faire des if (tab[i] != null)
 
Enfin bon...
 
Edit : j'ai lu tes msg suivants et on parle bien de la meme chose ou presque dsl.


Message édité par phenixl le 11-10-2002 à 14:40:14
n°226745
phenixl
Posté le 11-10-2002 à 14:45:51  profilanswer
 

benou a écrit a écrit :

 
Les exceptions sont pas faites pour améliorer les perfs !
 
les utiliser dans ce but est une abération !




 
Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation ! Elles doivent etre utilisees intensement mais lorsque c'est justifie.
 
Ce n'est pas l'utilisation qui doit etre exceptionnelle, mais la levee d'exceptions !  
 
Si tu utilises Exceptions + polymorphisme je t'assure que tu gagnes en performances, en lisibilite de code, etc... compare a une batterie de tests lourde et executee a chaque fois.
 
Bien sur derriere il faut faire en sorte que l'exception ne soit levee qu'exceptionnellement, mais ca c'est une question de design !
 

n°227009
bobuse
Posté le 11-10-2002 à 20:13:12  profilanswer
 

BifaceMcLeOD a écrit a écrit :

DarkLord> Rien à ajouter.  :jap:  
 
bobuse> Tu remarqueras que le nombre d'itérations dans mes 2 bouts de code était 100 000 (cent mille).




ha ok j'avais point le 100 000 !  :D  
 

phenixl a écrit a écrit :

 
 
Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation ! Elles doivent etre utilisees intensement mais lorsque c'est justifie.
 
Ce n'est pas l'utilisation qui doit etre exceptionnelle, mais la levee d'exceptions !  
 
Si tu utilises Exceptions + polymorphisme je t'assure que tu gagnes en performances, en lisibilite de code, etc... compare a une batterie de tests lourde et executee a chaque fois.
 
Bien sur derriere il faut faire en sorte que l'exception ne soit levee qu'exceptionnellement, mais ca c'est une question de design !




 
Ok ok, tout à fait d'accord sur ce point !
En fait, je voulais juste dire qu'il faut pas en mettre n'importe où, et les utiliser à tout vent (ce que tu as dit justement). Mais bon, ma phrase aura au moins suscité le débat ... c'est toujours positif

n°227101
benou
Posté le 11-10-2002 à 22:25:16  profilanswer
 

phenixl a écrit a écrit :

 
 
Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation !



 
 [:benou] j'ai jamais dis ca !

n°227105
phenixl
Posté le 11-10-2002 à 22:33:50  profilanswer
 

benou a écrit a écrit :

 
 
 [:benou] j'ai jamais dis ca !




 
PAS TOI ! :lol:  
 
J'ai reagi sur le terme "abberation" : ce que je dis est moins une abberation que ce qu'a dit bobuse (oui m'sieur ! euh d'accord m'sieur la prochaine fois je ne denoncerai pas un petit camarade :) )
 
D'ailleurs Bobuse m'a compris ;)  
 
 :hello:

n°227110
benou
Posté le 11-10-2002 à 22:45:58  profilanswer
 

phenixl a écrit a écrit :

 
PAS TOI ! :lol:  




ok, je préfere ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Méthode pour tester si une variable est initialisée ?

 

Sujets relatifs
variable d'Active Directory pr la creation de compte via un script VBnewbie : interface asp/java
C'est dur de faire des jeux en Java ???[JAVA] pd d'espace dans base acces
[JAVA]Properties|FileOutputStr eam|FileWriter : pb écriture flux ->textAffecter une valeur à une variable en javascript
[CSS] peut on remplacer la valeur de background par une variable ?bouquin java
[PhpNuke] Passer une variable de page en page ?[Java Script] Débutant
Plus de sujets relatifs à : [JAVA] Méthode pour tester si une variable est initialisée ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR