Débutant en JAVA

Débutant en JAVA - Java - Programmation

Marsh Posté le 21-01-2009 à 12:20:34    

Bonjour,  
 
Je début avec JAVA, j'ai des petites lacunes avec ce langage.  
Voila je doit saisire une chaine de caractéres et les renvoyer (seule les voyelles) dans un tableau, donc je devrais tester chaque caractére avant de le renvoyer dans le tableau.
 
example: la chaine 'bonjour' renvoie dans le tableau '_''o''_''_''o''u''_'.
 
-- Si char = voyelle ------> char dans Tab[j] sinon '_' dans Tab[j], et comme il y on a 6 voyelles (a, e, i, o, u, y) dois-je tester avec un IF charque caractére avec ces 5 voyelle ou y at-il une autre methode de le faire.
 
Pour tester si un caractére est majuscule ou minuscule (en utilisant le code ASCII), je code:

if (char > 'A'  &&  char <'Z')  alors char est majuscule           // test pour les majuscules
if (char > 'a'  &&  char <'z')   alors char est majuscule          //  test pour les minuscule[/i]

 
mais pour tester des voyelles, je ne sais pas faire !!!!
 
 
Merci de m'aider.  :??:  :??:

Message cité 1 fois
Message édité par lezenfr le 21-01-2009 à 12:24:05
Reply

Marsh Posté le 21-01-2009 à 12:20:34   

Reply

Marsh Posté le 21-01-2009 à 12:55:13    

http://java.sun.com/javase/6/docs/ [...] ng.Object) tu peux également passer par une chaîne de caractères contenant toutes les voyelles et http://java.sun.com/javase/6/docs/ [...] rSequence) ou http://java.sun.com/javase/6/docs/ [...] dexOf(int)

 

Et accessoirement, plutôt que de faire des comparaisons moches pour savoir si un caractère est en majuscule ou en minuscule, http://java.sun.com/javase/6/docs/ [...] Case(char) et http://java.sun.com/javase/6/docs/ [...] Case(char)


Message édité par masklinn le 21-01-2009 à 13:00:27

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 21-01-2009 à 13:07:58    

lezenfr a écrit :

dois-je tester avec un IF charque caractére avec ces 5 voyelle

La réponse est oui, et puis 6 if (et pas 5 :)), c'est pas la mort ...

Spoiler :

Après peut-être qu'en faisant une analyse combinatoire, on peut trouver une suite d'opération logique pour déterminer si un caractère donné est une voyelle ou non..................:pt1cable:


EDIT: euh 12 if en fait (maj + min)
re-EDIT: ah oui, sinon, j'y pensais, souhaites-tu gérer les voyelles accentuées ? parce que si oui, les if ça risque d'être un peu moche ...

 

Message cité 1 fois
Message édité par superbob56 le 21-01-2009 à 13:10:44

---------------
By bob.
Reply

Marsh Posté le 21-01-2009 à 13:32:24    

superbob56 a écrit :

La réponse est oui, et puis 6 if (et pas 5 :)), c'est pas la mort ...

Spoiler :

Après peut-être qu'en faisant une analyse combinatoire, on peut trouver une suite d'opération logique pour déterminer si un caractère donné est une voyelle ou non..................:pt1cable:


EDIT: euh 12 if en fait (maj + min)
re-EDIT: ah oui, sinon, j'y pensais, souhaites-tu gérer les voyelles accentuées ? parce que si oui, les if ça risque d'être un peu moche ...
 


 merci de ta réponse, oui je doit tester même les voyelles accentuées, avec des IF sa devient un peu LOURD,
si ta une idée, elle sera la bienvenue. merci d'avance.

Reply

Marsh Posté le 21-01-2009 à 13:39:46    

superbob56 a écrit :

La réponse est oui, et puis 6 if (et pas 5 :)), c'est pas la mort ...

Spoiler :

Après peut-être qu'en faisant une analyse combinatoire, on peut trouver une suite d'opération logique pour déterminer si un caractère donné est une voyelle ou non..................:pt1cable:


EDIT: euh 12 if en fait (maj + min)
re-EDIT: ah oui, sinon, j'y pensais, souhaites-tu gérer les voyelles accentuées ? parce que si oui, les if ça risque d'être un peu moche ...
 


 [:$crounz]  

lezenfr a écrit :


 merci de ta réponse, oui je doit tester même les voyelles accentuées, avec des IF sa devient un peu LOURD,
si ta une idée, elle sera la bienvenue. merci d'avance.


 [:darksamus]


Message édité par masklinn le 21-01-2009 à 13:40:23

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 21-01-2009 à 13:58:12    

lezenfr a écrit :


 merci de ta réponse, oui je doit tester même les voyelles accentuées, avec des IF sa devient un peu LOURD,
si ta une idée, elle sera la bienvenue. merci d'avance.


Ben si tu dois tester les voyelles accuentuées, utilise la méthode de Masklinn, définis une chaîne de caractères contenant tous tes caractères, et teste avec http://java.sun.com/javase/6/docs/ [...] ng.Object) ou http://java.sun.com/javase/6/docs/ [...] rSequence)
Masklinn je comprends ta réaction, mais bon, parfois quelques if valent mieux qu'un long discours (autant pour la compréhension des gens qui risquent lire ce code que pour les aspects perfs) ...
Mais bon dans le cas présent je déconseille vraiment les if vu le nombre de caractères à tester ...
 


---------------
By bob.
Reply

Marsh Posté le 21-01-2009 à 14:09:11    

superbob56 a écrit :

Masklinn je comprends ta réaction, mais bon, parfois quelques if valent mieux qu'un long discours (autant pour la compréhension des gens qui risquent lire ce code que pour les aspects perfs) ...


J'ai du mal à voir en quoi

Code :
  1. if(chr == 'a' || chr == 'à' || chr == 'e' || chr == 'é' || chr == 'è' || chr == 'ê' || chr == 'i' || chr == 'o' || chr == 'ô' || chr == 'u' || chr == 'y' [...]) {
  2.    // voyelle
  3. } else {
  4.    // consonne
  5. }


est plus lisible que

Code :
  1. if(VOWELS.contains(chr)) {
  2.    // voyelle
  3. } else {
  4.    // consonne
  5. }


[:petrus75]

 

Ou plus maintenable, et question performance c'est très débattable (sauf si elle est optimisée par le compilo -- ce dont je doute, la suite de OR dans le if va s'exécuter en O(n) avec shortcutting et une très faible constante, un test de contenu dans un hashset c'est O(1) avec une plus grosse constante, et pour un treeset c'est du O(log n))


Message édité par masklinn le 21-01-2009 à 14:11:52

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 21-01-2009 à 14:36:35    

Ne me fais pas dire ce que je n'ai pas dis ...
En l'occurence ce que j'ai dit c'est la chose suivante :

Citation :

Mais bon dans le cas présent je déconseille vraiment les if vu le nombre de caractères à tester ...


Après concernant les performance entre un if contenant 5 or, et un contains (faisant un ou plusieurs appels de méthodes à partir de classes définies par des interfaces, ...), en effet c'est débattable ...
EDIT: mais bon, on ne va pas en débattre 107 ans car au final, ce que j'ai dit c'est qu'il fallait mieux utiliser ta méthode vu le nombre de caractères à tester ...
 


Message édité par superbob56 le 21-01-2009 à 14:38:24

---------------
By bob.
Reply

Marsh Posté le 21-01-2009 à 19:10:48    

Merci a tous,  
comment mettre ce test en tanque methode, que j'appelle dés que j'ai besoin.
je suis un peu perdu
Merci d'avance.

Message cité 1 fois
Message édité par lezenfr le 21-01-2009 à 22:52:46
Reply

Marsh Posté le 22-01-2009 à 17:02:57    

lezenfr a écrit :

Merci a tous,  
comment mettre ce test en tanque methode, que j'appelle dés que j'ai besoin.
je suis un peu perdu
Merci d'avance.

On ne va pas non plus faire tout le boulot à ta place...
Si tu ne sais pas comment faire ça, ça veut dire que tu manques sérieusement de connaissances de BASE en Java.
Dans ce cas, je te conseille de lire un (ou plusieurs) des tutoriaux conseillés sur le forum ...
http://forum.hardware.fr/hfr/Progr [...] 8709_1.htm


---------------
By bob.
Reply

Marsh Posté le 22-01-2009 à 17:02:57   

Reply

Marsh Posté le 22-01-2009 à 23:04:01    

J'ai bien précisé que je débute en java, j'ai ecris déja mon programme, mais l'appel de la methode coince.  !!!
merci Komeme

Reply

Marsh Posté le 23-01-2009 à 09:27:40    

lezenfr a écrit :

J'ai bien précisé que je débute en java, j'ai ecris déja mon programme, mais l'appel de la methode coince.  !!!
merci Komeme


 
Même si nous on a de la bouteille en java, on aurait quand même besoin de voir le code que tu as écrit pour voir ce qui cloche ;)

Reply

Marsh Posté le 24-01-2009 à 17:02:47    

Solution trouvé, merci, les gars.  
Je me suis cassé la tête jusqui'a 04h du matin tout est rentré dans l'ordre.
 

Reply

Marsh Posté le 24-01-2009 à 22:34:51    

lezenfr a écrit :

Solution trouvé, merci, les gars.  
Je me suis cassé la tête jusqui'a 04h du matin tout est rentré dans l'ordre.
 


Solution qui est ?
 
Sinon moi j'aurais fais une regex mais c'est peut être overkill


---------------
my flick r - Just Tab it !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed