IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème fonction récupère caractère dans chaine


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 72
    Par défaut Problème fonction récupère caractère dans chaine
    Bonjour je dois réaliser une fonction qui permet de récupérer une chaine de caractère. cette chaine de caractère est une opération " 5 + 6 = x" la fonction doit détecter les nombre et récupérer le 5 le 6 et le + pour réaliser une opération et retourner le x c'est a dire le résultat.

    J'ai déjà réalisé un morceau de code mais je n'arrive pas récupérer les caractère mon programme me dit : java.lang.NumberFormatException
    Je ne sais pas comment résoudre le problème. Merci de m'aidé un peu pour être débloqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
     
    package Mes_Classes_Maths;
     
     
     
    public class C_Maths {
     
     
     
    	public String Fonction_Interprète(String ChaineCaractère){
     
    	String y = null;
    	String k = null;
    	String Opérateur = null;
    	String x = null;	
     
    	int iRechercheEspace = 1;
    	String Chaine = ChaineCaractère;
    	int iTampon = 0;
    	String sTampon = Chaine;
    	int compteur = 0;
    	String TableauChaine[] = null;
     
    	while (iRechercheEspace >= 0 ){
    		iRechercheEspace = sTampon.indexOf("/");
    		if(iRechercheEspace  >= 0 ){
    				 TableauChaine[compteur] = sTampon.substring(iTampon,iRechercheEspace -  1);
    			sTampon = Chaine.substring(iRechercheEspace+1, Chaine.length());
    		}else{
    			TableauChaine[compteur]= sTampon;
    		}
    		compteur ++;
     
    	}
    		 System.out.println("d"+TableauChaine[1] );
     
     
     
    	  //y = ChaineCaractère.substring(1); 
    	  //Opérateur = ChaineCaractère.substring(2);			  
    	  //k = ChaineCaractère.substring(4);			  
     
     
    	  System.out.println( y + k + Opérateur);
     
    	  	 float y1 = Float.parseFloat(y);
    		 float k1 = Float.parseFloat(k);
    		 float x1 = 0;
     
    		 //System.out.println (y1 +" "+ k1+" "+ Opérateur);
    	     //System.out.println (Opérateur);
     
    		if (Opérateur == "+"){
    			x1 = y1 + k1;
    			x =Float.toString(x1);
    		}
     
    		 if ((Opérateur == "-")&& (y1 >= k1)){
    			x1 = y1 - k1;
    			x = Float.toString(x1);
    		}else if((Opérateur == "-")&& (y1 <= k1)){
    			x1 = k1 - y1;
    			x = Float.toString(x1);
    		}	
     
    		if (Opérateur == "x"){
    			x1 = y1 * k1;
    			x = Float.toString(x1);
    		}
     
    		if (Opérateur == "/"){
    			x1 = y1 / k1;
    			x = Float.toString(x1);
    		}
     
     
     
    		else{
    			System.out.println("Données rentrées invalides. Veuillez recommencer");
    		}	
     
     
    		System.out.println ("Le résultat est :" + x);	
     
     
     
    	return null ;
    }
     
     
     
    	public static void main(String[] args) {
    		C_Maths Interprète1 = new C_Maths();
    		Interprète1.Fonction_Interprète("5 + 4 = x");
     
    	}
     
    }

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, je pense que ça te faciliterait énormément les choses sit tu utilisais la fonction de String : split.

    Le code qui initialise tes variables y, k et Opérateur est en commentaire, d'où l'exception...

    Par convention, les variables doivent commencer par une minuscule et ne doivent pas contenir d'accents.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Encore mieux, Pattern et Matcher sont tes amis !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String strCommande = "5+7"; // Eventuellement recupéré sur le flux INPUT
    Pattern p = Pattern.compile("([0-9]+)[ ]?([*/+-]{1})[ ]?([0-9]+)");
    Matcher m = p.matcher(strCommande);
    if( m.matches() ) {
    int num1 = Integer.valueOf(m.group(1));
    String operateur = m.group(2);
    int num2 = Integer.valueOf(m.group(3));
    ...
    } else {
    // L'operation n'est pas ecrite dans un format reconnaissable...
    }
    Pas testé mais dans les grandes lignes ca t'économise un bon paquet de lignes.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 72
    Par défaut
    Merci pour l'aide je vais tester et je reviendrais en fin de semaine pour vous dire si cela fonctionne

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 72
    Par défaut
    j'ai trouvé une solution Meci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Encodage] problème encoder le caractère dans le titre !
    Par smed79 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2012, 19h49
  2. Problème encodage des caractères dans une JListe
    Par pontus21 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 27/08/2008, 00h57
  3. Problème police de caractère dans JProgressBar
    Par barbiche dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 15/10/2007, 14h41
  4. Problème jeu de caractère dans base.
    Par juliobarna dans le forum Outils
    Réponses: 3
    Dernier message: 05/05/2007, 16h56
  5. Problème avec certains caractéres dans variable
    Par Off$ide dans le forum Langage
    Réponses: 14
    Dernier message: 13/12/2005, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo