Chaine de caractere java

Chaine de caractere java - Java - Programmation

Marsh Posté le 12-01-2011 à 16:17:18    

Bonjour actuellement en études, on nous demande de créer un programme qui permet de faire d'une chaine de caractère un entier. J'ai réussi mais lorsque je veut mettre cette étape de conversion dans une fonction "public static String......" la variable nommée "t" qui est un int ne peut être reconnue.  
Je sollicite donc votre aide pour régler ce petit problème.
merci d'avance
 
http://img689.imageshack.us/img689/5312/86674093.jpg
 
public class ex2{
 public static void main (String args [])
 {
  String t=("-5553" );
  int resultat=1;
  System.out.println(t.length());  
  System.out.println(resultat);  
  System.out.println(resultat);  
  int o=resultat+9;
  System.out.println(o);  
 }
// calcul pour verifier  
  public static String ve(String t, int resultat){
   String i=("-" ), j=("+" ),k=("0" ), l=("1" ), m=("2" ), n=("3" ), p=("4" );  
   String q=("5" ), r=("6" ), s=("7" ), v=("8" ), u=("9" );  
   String e = new String(t.charAt(0)+"" );
   if(e.equals(i) || e.equals(j) || e.equals(k) || e.equals(l) || e.equals(m) || e.equals(n) || .equals(p)||e.equals(q)||e.equals(r)||e.equals(s)||e.equals(v)||e.equals(u))
    {
    resultat=Integer.parseInt(t);
    }
   else
   {
    if(e!=i){
     resultat=0;
    }
   }
   return t;
  }
 
}

Reply

Marsh Posté le 12-01-2011 à 16:17:18   

Reply

Marsh Posté le 12-01-2011 à 16:33:59    

- Relis une fois ton code, y a des bouts qui servent à rien / veulent rien dire (genre les 3/4 de ton main font des trucs zarb)
- Pourquoi cette signature étrange pour ta fonction de vérification? Pourquoi statique, pourquoi avoir "resultat" comme paramètre, pourquoi retourner un String?
- Utilise une Regexp pour décider si le résultat est 0 ou pas (dans ton cas, si tu écris 23truc34, tu ne forceras pas le résultat à 0).
 
Les autres questions viendront après que tu auras mouliné un peu sur ton exo


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 12-01-2011 à 16:59:14    

esox_ch a écrit :

- Relis une fois ton code, y a des bouts qui servent à rien / veulent rien dire (genre les 3/4 de ton main font des trucs zarb)
- Pourquoi cette signature étrange pour ta fonction de vérification? Pourquoi statique, pourquoi avoir "resultat" comme paramètre, pourquoi retourner un String?
- Utilise une Regexp pour décider si le résultat est 0 ou pas (dans ton cas, si tu écris 23truc34, tu ne forceras pas le résultat à 0).
 
Les autres questions viendront après que tu auras mouliné un peu sur ton exo


 
Bonjour, merci pour la réponse.
-dans ma fonction main, j ai juste initialisé une chaine de caractère avec l'affichage du nombre de caractères (c'était optionnel plus pour moi afin que j'essaye de mieux comprendre les chaines de caractères). Sinon j'ai juste afficher la variable résultat pour la comparer avec la variable o et voir si l'addition c'était bien effectuée en prenant les valeurs de la chaine de caractère.
-pour la fonction string ve : j 'ai choisi string a cause d'un exemple dans un exercice de mon cours, je l'ai pris parce que je ne savais pas très bien quoi mettre si il fallait mettre int ou string sachant que j'aillais renvoyer a une donnée string.
résultat parce que je voudrais que la valeur présente dans la chaine de caractère soit renvoyée dans la variable résultat de la fonction principale. c'est juste un nom que j'ai donné.
-pour le 0 je veut juste que lorsque "e" est différent de "i", résultat prenne la valeur 0.
 
merci d'avance pour la réponse.

Reply

Marsh Posté le 12-01-2011 à 18:37:57    

- C'est toi qui voit, reste que ton programme prend l'eau de tous les côtés - Mauvaise réponse. Demande toi ce que tu veux : Tu veux une commande qui te retourne l'entier représentant un string
=> public static Integer ve(String monString)  
Dis-toi aussi que le mot "static" là n'est pas anodin ... faut éviter de tomber dans le piège de tout foutre static dans tous les sens.
- Ce n'est pas ce qui est demandé dans ton énoncé : Il te dit "Si une lettre autre que .... est présente dans le string", Donc "123truc45" => 0, alors que dans ton programme ce n'est pas le cas => Utilise les expressions régulières


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 12-01-2011 à 19:40:57    

ben je veut bien transformer tout le code pour qu'il soit bon, mais le problème c'est que je suis un débutant. Pour les public static, on nous a montrer que ça. On nous a expliqué très peu de choses, les chaines de caractères on a maximum 3 pages, donc autrement dit rien du tout.  
J'ai fait ce code avec le peu de connaissances a mon actif.
si vous pouviez m'expliquer les problèmes avec plus de détails afin que je comprenne, je vous en serai gré.
merci d'avance.

Reply

Marsh Posté le 13-01-2011 à 10:30:36    

D'accord, tu as eu des cours de m****, très (pas) bien.
Maintenant t'as 2 solutions : Essayer de bidouiller avec les connaissances qu'on vous a balancées sans trop savoir ce que tu fais (comme dans ton script plus haut)
 
ou
 
Aller dans le topic du débutant Java (tout en haut sur la liste des topics) et lire un peu les premiers posts, et ensuite chercher à te documenter par toi même.. Surtout que dans mes 2 derniers posts je t'ai dit pratiquement tout ce que tu dois faire pour avoir un code qui marche :/


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2011 à 13:45:34    

D'ailleurs, question à côté pour les éventuels experts. Si vous deviez faire ça dans un vrai programme vous feriez comment? Créer une classe fille de String qui défini la méthode qui va bien? Créer une classe Validator avec toutes les combinaisons ( String -> Integer, String -> Float, ...) ?
 
Parce que en Ruby moi j'injecterais ça directement dans String, mais en Java je sais pas ce qui est plus standard :heink:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2011 à 13:49:10    

esox_ch a écrit :

Créer une classe fille de String qui défini la méthode qui va bien?


 
ca tu oublie : string est finale :D


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-01-2011 à 14:00:38    

shit j'avais oublié ... Quelle drôle d'idée d'ailleurs :heink:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2011 à 14:50:33    

Bon, j'ai eu 5 minutes à tuer et je t'ai donc écrit un truc qui marche.
Maintenant, je n'ai exprès pas mis de commentaires dans le code de manière à ce que tu doives toi-même comprendre qui fait quoi. En plus, si vous avez eu si peu de cours que ça, si tu le rends tel quel à ton prof il va t'allumer la gueule, donc t'es condamné à comprendre :D

 
Code :
  1. import java.io.*;
  2.  
  3. public class ex2{
  4.     public static void main(String args[]){
  5.         boolean cont = true;
  6.         String test;
  7.         
  8.         while (cont) {
  9.             System.out.print("Enter the string to validate: " );
  10.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11.             
  12.             try {
  13.                 test = br.readLine();
  14.                 if(test.equals("exit" ))
  15.                     cont = false;
  16.                 else
  17.                     System.out.println(validate(test));
  18.             }
  19.             catch (IOException e) {
  20.                 System.out.println("Oops" );
  21.                 System.exit(1);
  22.             }
  23.         }
  24.         System.out.println("Exiting" );
  25.     }
  26.  
  27.  
  28.     public static Integer validate(String toConvert){
  29.         if(toConvert.matches("^-?[0-9]*$" ))
  30.             return Integer.parseInt(toConvert);
  31.         else if (toConvert.matches("^\\+[0-9]*$" ))
  32.             return Integer.parseInt(toConvert.substring(1,toConvert.length()));
  33.         else
  34.             return 0;
  35.     }
  36. }
 

Edit: Simplifié la 1ère regexp


Message édité par esox_ch le 13-01-2011 à 14:53:53

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2011 à 14:50:33   

Reply

Marsh Posté le 13-01-2011 à 14:56:45    

euh, c'est moi ou l'exercice demande justement à recoder parseInt, et pas à l'utiliser? (utilisation de charAt et tout)

Reply

Marsh Posté le 13-01-2011 à 15:00:12    

Je viens de relire ... en effet vu qu'il parle de charAt ça doit être comme tu le dis.. Bon bein 5 min foutues à la poubelle comme on dit :lol:
 
À part ça ... j'ai pas l'impression que leur faire recoder parseInt soit beaucoup plus compliqué que ce que j'ai fait là .. Parce que c'est juste une moulinette, alors que là au moins ils auraient du utiliser les regexp :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2011 à 15:05:28    

esox_ch a écrit :

À part ça ... j'ai pas l'impression que leur faire recoder parseInt soit beaucoup plus compliqué que ce que j'ai fait là .. Parce que c'est juste une moulinette, alors que là au moins ils auraient du utiliser les regexp :o


[:eneytihi:4]
indeed.


Message édité par pataluc le 13-01-2011 à 15:06:16
Reply

Marsh Posté le 14-01-2011 à 17:14:03    

Bonjour, je vous remercie pour le temps que vous m'avez accordé et pour vos réponse.  
J'ai réussi a régler mon problème avec un coup de main d'un de nos prof.
merci a tous

Reply

Marsh Posté le 14-01-2011 à 17:14:47    

Merci de poster la solution pour les suivants


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-01-2011 à 17:21:12    

public class ex2{
 public static void main (String args [])
 {
 int resultat=0,puissance=1, chiffre;
 String chaine=("-48" );
 int position=chaine.length()-1;
 char c;
 while(position>=0){      
 c=chaine.charAt(position);
      if(c>'0' && c<'9'){
       chiffre=c-'0';
       resultat=resultat+chiffre*puissance;
       }
      else{
       if(c=='-'){
       resultat=resultat*-1;
       }
       else{
       resultat=0;}
      }
       
      puissance=puissance*10;
      position=position-1;    
   }
   
 System.out.println(resultat);  
 }
 
}

Reply

Marsh Posté le 14-01-2011 à 17:40:12    

et bein ton prof il doit pas écrire du Java tous les jours :heink:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-01-2011 à 17:44:41    

bof notre prof est un peu inutile enfin l'important c'est que sa marche. Parce que je devais le rendre aujourd'hui comme sa maintenant j'ai le temps de lire les tutos etc... de façons a progresser et après le refaire avec des connaissance plus approfondis.

Reply

Marsh Posté le 14-01-2011 à 18:13:51    

Bein essaie de comprendre la version que t'ai sortie moi, et "améliore" là en n'utilisant par parseInt mais uniquement charAt. Comme ça on verra si tu as vraiment compris :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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