Petit exo en simplejava

Fermé
jujusous3 - 22 févr. 2009 à 22:12
 jujusous3 - 23 févr. 2009 à 20:46
Bonjour, cela va peut être vous paraître très simple mais je débute la programmation en simplejava, je connais les diffèrentes structures(boucles, si sinon ...) . Je voudrais réaliser un programme en simplejava, qui parcours une chaine de caractère et qui associe à chaque caractère, le caractère + 3 dans l'alphabet . Par exemple, pour la lettre "a" , il associe "d" , ceci pour chaque caractère de la chaine. Par exemple, si je rentre : "bonjour" , je dois obtenir : "erqmrxu" . Le but étant de "crypter" le message, même si la méthode utilisé est très simple, c'est juste pour s'entrainer. Le problème c'est que je ne vois pas trop comment procéder...

9 réponses

Hmmm, toi, tu es Lillois pour tes études :-)

Pour en revenir au problème qui nous intéresse, l'opérateur + fonctionne entre les char et les int.
Tu peux donc faire A=(char)(A+3); (en suipposant que A soit une variable de type char).
Par exemple, A='r'; A=(char)(A+3); System.out.print(A); t'affichera le caractère u.
Il te suffit de faire ça pour tout les caractères de ta chaîne, et le tour est joué !
0
Oui en effet, je suis à l'IUT Info de Lille 1, donc la manière pour dire caractère + 3 c'est (char)(A+3) ? Je n'aurais pas pu trouver ça tout seul, je vai essayer d'appliquer ça sur tous les caractères avec une petite boucle et je te dis si ça marche:) Merci pour ta rapidité en tout cas!!
0
jujusous3 > jujusous3
22 févr. 2009 à 22:53
le truc c'est que je ne veut pas qu'afficher le mot codé, mais le rentrer dans une variable, et là j'ai du mal, je dois prendre chaque caractère, additionner 3, et le concatener avec la suite en enlevant le premier caractère....
0
En java, ca marche en tout cas. Je suppose que simplejava l'accepte aussi...
Par contre, c'est le cas général. Il reste 3 cas particuliers à faire manuellement :-)
0
un autre soucis : A est un caractère, et quand je veux le concatener avec une chaine c'est impossible... il faut que A soit une chaine, mais l'opération A + 3 avec A en chaine ne fonctionnera pas...
0
Jamian > jujusous3
22 févr. 2009 à 23:04
Hmmm, on peut passer par une représentation en tableau de char, faire la transformation, et reconstruire la chaîne de caractère après.
En java, ça donnerait ça : (avec s de type String)
char[] s2 = s.getBytes();
// décalage de tous les caractères...
String s3 = new String(s2);
0
jujusous3 > Jamian
22 févr. 2009 à 23:10
En fait moi c'est du simplejava, donc j'ai essayé d'utiliser la fonction charToString qu'on peut utilisé en java apparamment, mais dans le logiciel de compilation simplejava que le prof a crée pour nous je ne peux pas l'utiliser, il ne connais pas la méthode charToString, je n'ai que ces méthodes pour les chaines :

• char charAt(String,int)
• int longueur(String)
• String concatener(String,String)
• String sousChaine(String,int,int)
• String intToString(int)
• String doubleToString(double)
• int stringToInt(String)
• double stringToDouble(String)
• boolean lessThan(String,String)
• boolean lessThanOrEqualsTo(String,String)
• boolean greaterThan(String,String)
• boolean greaterThanOrEqualsTo(String,String)
• boolean equalsTo(String,String)
• boolean notEqualsTo(String,String)

Donc je ne pense pas que ta méthode va passer dans le logiciel que j'ai....compliqué hein?
0
voila ce que j'ai : Class "char" has no method named "getBytes"
0
non, getBytes, il faut l'appliquer à un String, pas au char :) Mais ceci dit, effectivement, je ne pense pas que ce soit la méthode que ton prof veuilles que tu emploies (sinon, ce ne serait pas la peine d'avoir mijoté simplejava :) )
(rhaa ! Et evidemment, y'a pas le source dans le .jar de simplejava, donc on ne peut pas voir ce qu'il fait exactement avec les bouts de code qu'on lui rentre...)

Hmmmm... j'essaye de faire des tests et je te dis quoi...
0
Le source est peut être dans le jar de simplejava, tu l'as aussi le logiciel? Le prof ne m'a pas donné l'exo à faire, c'est moi qui me le suis concocté pour m'entrainer:) Mais il doit bien y avoir moyen, on a fait des petits programe comme le mirroir, palindrome...et là j'ai pensé à ce problème de caractère + 3 ...etc. En gros comment appliqué pas mal de changement à une chaine de façon automatique pour qu'elle soit cryptée, je pensais que ça allait être simple mais ...

merci encore pour ton aide! J'ai envoyé un mail à ma prof pour lui demander si elle pouvait m'aider, on verra bien ce qu'elle dira...

J'ai trouvé d'autres alternatives plus longues(plusiuers boucles imbriquées, une pour l'alphabet, une pour parcourir la chaine de caractère, limite une encore en plus avec des nombres jusqu'à 26) mais c'est trop compliqué à faire je pense...
0
Tiens si tu veux tester le logiciel, toute l'installation est détaillé sur le site de ma prof :

http://www2.lifl.fr/~boneva/AlgorithmiqueEtProgrammation0809/AlgorithmiqueEtProgrammation0809
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je l'ai téléchargé sur le site de 'IUT de Lille. J'ai essayé d'en faire quelque chose, mais en l'absence de doc, c'est dur :) Même pour un programme tout bête qui ne fait rien, je me prend un NullPointerException à la compilation (et là, ça doit venir de la cuisine interne du logiciel, étant donné que je n'ai utilisé que des types primitifs...)
Oui, il y a toujours la méthode bourrin de faire 26 if en fonction de ce que retourne charAt (ou un switch à 26 cas, si ca existe en simplejava...) mais effectivement, ce n'est pas très joli :-)
Dis-moi ce qu'il en est en tout cas, je suis curieux de voir ça...
0
Ah, mieux, le premier TP a l'air de détailler plus de choses, contrairement à ce que propose l'auteur original... Je regarde ça...
0
pour l'erreur pointernull, c'est tout bête, tu n'utilise pas la bonne version de java, je suis sous mac ça a marché direct, sous windows pas testé, sous linux après installationde la bonne version de java c'est nickel, regarde bien sur la page que je t'ai donné, tout est détaillé de a à z.
0
Arrgh ! Faut installer la 1.5... je n'ose même pas imaginer comment ça a été codé pour être incompatible avec la 1.6... :/ Bon, heureusement, j'ai le mac à coté...
0
:)
0
YES ! On peut quand même pallier au manque de certaines fonctions dans simplejava !

Ce code là fonctionne (j'ai "oublié" de déclarer les variables dans la partie prévue à cet effet, mais ça fonctionne très bien quand même...)


String s = new String("Ratapoil ugusse");
byte[] c = s.getBytes();
byte trois=3;
for (int i=0;i<c.length; i++) {
c[i]=(byte)(c[i]+3);
}
s = new String(c);
println(s);


Je n'ai pas fait le test de l'espace ou des lettres x y et z, mais pour le reste, ça marche...
"byte", c'est le type octet en java (d'autres langages considèrent que byte et char sont exactement la même chose, mais pas java apparemment).

Si j'ai bien compris son fonctionnement, simplejava prend le bout de code que tu lui entres, colle un tas de fioritures autour de manière à en faire un vrai programme java, le compile, et l'exécute. Par contre, je ne sais pas ce qu'il fait au juste de la partie "variables", mais on peut pas mettre tout le code dedans. Pas drôle :)
0
Il faudrait que j'arrive à écrire ça en simplejava pour vraiment respecter l'écriture mais ça fonctionne nickel en tout cas, merci beaucoup à toi!!
0
jujusous3 > jujusous3
23 févr. 2009 à 16:56
au fait, tu es de lille?
0
Non, d'Orléans. Mais j'avais entendu parler du simplejava des Lillois qui permettait de faire faire du java aux étudiants sans leur parler de programmation objet, ni leur dire "bon, y'a des lignes magiques, mettez les tout le temps, vous verrez plus tard à quoi elles servent" :)
(mais personellement, je pense qu'il y a des langages plus appropriés pour s'initier à l'algo / la programmation, comme ADA, voire Python... Mais bon, ceci est un autre sujet ;-) )

Il semblerait que simplejava permette de rajouter relativement simplement des fonctions supplémentaires ceci dit (il y a un répertoire .simplerjava qui contient moultes choses, dont des fichiers qui semblent contenir la définition de toutes les fonctions directement disponibles dans simplejava). Donc, au pire, il doit être possible de demander gentiment à son auteur...
0
Ok, ba en fait je fais un semestre 1 bis (en décalé), j'était trop juste pour passer en semestre 2 donc je refait direct un semestre 1 en décalé, et en fait pendant mon premier semestre 1, on avait fait de l'ADA, je préfèrait ce language, là je suis d'accord avec toi, soit on fait du vrai java, mais pas facile pour débuter, soit on fait de l'ada...
0