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

Langage Java Discussion :

difficultés pour convertir un tableau String en int


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut difficultés pour convertir un tableau String en int
    Bonsoir,

    J'essaye de convertir le contenu d'un tableau de String en int, il comporte 6 paquets de 3 chiffres.
    La conversion réussie avec le premier paquet, je n'arrive pas à convertir les 5 restants.
    Les données sont issues d'un fichier data.txt

    Voici ma sortie en console avec eclipse
    Affiche la ligne issue du fichier txt + action split: 144, 140, 135, 155, 141, 146
    Transforme les String en int, incomplet pour le moment: 144
    java.lang.NumberFormatException: For input string: " 140"



    Ci-joint mon code
    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
    public class Relevé {
     
    		public static void main(String[] args) throws IOException {
     
    		        // lecture du fichier texte autre solution
    				try {
    				FileInputStream chiffres = new FileInputStream("data.txt");
    				InputStreamReader inputStr = new InputStreamReader(chiffres);
    				BufferedReader bufredR = new BufferedReader(inputStr);
    				String ligne;
     
    				// découpe la liste du ficher txt avec virgule et espace avec split
    				while ((ligne = bufredR.readLine()) != null) {
    				String tableauDecoup[]=ligne.split(",");
    				System.out.println("Affiche la ligne issue du fichier txt + action split:  " + ligne);
     
    				  List<String> liste = Arrays.asList(tableauDecoup);
    					int[] intArray = new int[tableauDecoup.length];
    					for(int i=0; i<intArray.length; i++) 
    					{
        				intArray[i]=Integer.parseInt(tableauDecoup[i]);
        				System.out.println("Transforme les String en int, incomplet pour le moment:  " + intArray[i]);
    					}
     
    				}
    				bufredR.close();
    				} 
    				catch (Exception e) {
    				System.out.println(e.toString());
    				} 
     
    		}//fin de la fonction Main
     
    }//fin classe Relevé	]
    Merci de bien vouloir m'épauler.
    Très cordialement
    rapidego

  2. #2
    doc
    doc est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 105
    Par défaut
    Je pense que c'est parce qu'il y a un espace après la virgule.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut les paquets de chiffres sont tous breconnus
    Citation Envoyé par doc Voir le message
    Je pense que c'est parce qu'il y a un espace après la virgule.
    Bonjour doc,
    En plein dans le mil bravo j'ai mis un espace au niveau du split et tout est rentré dans l'ordre.
    Merci pour ce détail qui m'a échappé. Dire que depuis huit soirées je cherchais en vain.

    Très cordialement
    et à +++ rapidego

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut encore un problème de sortie sur btableau
    Bonsoir,

    Dans mon post ci-dessus j'ai expliqué que tout était résolu.
    Effectivement c'était le cas avec 6 paquets de chiffres.

    J'ai modifié mon projet et je l'ai porté à 18 paquets.
    Là je me retrouve avec le même problème d'affichage.

    Voici la sortie avec données et erreur identique que ci-dessus.
    Code console : 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
    Affiche la ligne issue du fichier txt + action split:  144, 140, 135, 155, 141, 146, 147, 155, 141, 150, 143, 129, 149, 137, 137, 149, 142, 136 
    Transforme les String en int:  140
    Transforme les String en int:  135
    Transforme les String en int:  155
    Transforme les String en int:  141
    Transforme les String en int:  146
    Transforme les String en int:  147
    Transforme les String en int:  155
    Transforme les String en int:  141
    Transforme les String en int:  150
    Transforme les String en int:  143
    Transforme les String en int:  129
    Transforme les String en int:  149
    Transforme les String en int:  137
    Transforme les String en int:  137
    Transforme les String en int:  149
    Transforme les String en int:  142
    java.lang.NumberFormatException: For input string: "136 "
    

    voici mon code modifié
    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
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.List;
    import java.util.Arrays;
     
    public class RelevéSystjour1 {
    	 static int total = 0;
     
    		public static void main(String[] args) throws IOException {
     
    			CalculTotaletMoyenne();	//appel de méthode
     
     
    	}//fin de la fonction Main
     
    		public static int CalculTotaletMoyenne() {
     
    			 // lecture du fichier texte
    			try {
    			FileInputStream chiffres = new FileInputStream("C:/Users/willy/Documents/dataSystjour1.txt");
    			InputStreamReader inputStr = new InputStreamReader(chiffres);
    			BufferedReader bufredR = new BufferedReader(inputStr);
    			String ligne;
     
    			// découpe la liste du ficher txt avec virgule et espace avec split
    			while ((ligne = bufredR.readLine()) != null) {
    			String tableauDecoup[]=ligne.split(", ");
    			System.out.println("Affiche la ligne issue du fichier txt + action split:  " + ligne);
     
    			  List<String> liste = Arrays.asList(tableauDecoup);
    				int[] intArray = new int[tableauDecoup.length];//lit tous les chiffres
    				for(int i=0; i<intArray.length; i++) 
    				{
    				intArray[i]=Integer.parseInt(tableauDecoup[i]);//transforme les chiffres en int
    				System.out.println("Transforme les String en int:  " + intArray[i]);
    					}//fin de ce qu'il y a dans la boucle
     
    				int total = liste.stream().mapToInt(Integer::valueOf).sum();//calcul le total
    				System.out.println("Calcule le total:  				" + total);
    				System.out.println("Calcule la moyenne des 6 relevés Systolique:  		" + total/18); 
    				//fin de calculer le total de la liste
     
    			}//fin while
     
    			bufredR.close();//ferme le fichier
     
    			}// fin de try 
     
    			catch (Exception e) {
    			System.out.println(e.toString());
    			}//fin de catch 
     
    			return total/18;
     
    		}// fin de la méthode CalculTotaletMoyenne
     
    }//fin classe Relevé
    merci pour l'aide
    très cordialement
    rapidego

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut suite ci-dessus
    Bonsoir,
    C'est bon j'ai trouvé, encore le même problème d'espace suite à une erreur de frappe j'avais un espace après le dernier paquet.

    Merci avec mes excuses
    à+++ cordialement
    rapidego

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 890
    Billets dans le blog
    53
    Par défaut
    Donc faire intArray[i]=Integer.parseInt(tableauDecoup[i].trim()); car ton expression régulière pour découper le tableau ne supprime pas des potentiels espaces après le dernier nombre.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut sélectionner une plage dans untableau en java
    Bonsoir,

    Merci à bouye pour le conseil.

    Suite à mon programme ci-dessus.

    Est-il possible de sélectionner une plage de paquet de chiffres dans mon tableau afin d'y effectuer un calcul.

    à+++ cordialement
    rapidego

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 890
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 890
    Billets dans le blog
    53
    Par défaut
    C'est a dire ? A partir du moment ou tu as ton tableau, tu peux uniquement travailler sur une sous-partie de ce dernier via une boucle for ou via IntStream en connaissant l'indice de debut (et au choix la longueur des elements a traiter ou l'indice de fin).
    Si les elements a traiter ne sont pas contiguës, a toi de définir le test approprié a appliquer pour discriminer les elements les uns des autres, et tu peux soit parcourir l’intégralité du tableau via une bouche for, for-each, while, do-while ou Array.stream().filter()...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Par défaut Essai sur travail avec tableau
    Bonsoir,
    Merci à bouye pour son aide.

    A force de persévérer je suis arrivé à avancer, ce code n'est qu'un essai, je suis un retraité qui est passionné de programation !

    J'ai en partie résolu mes essais.

    Ci-dessous mon code et à la suite, la sortie sur console eclipse.

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    package tensionessai1;
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.List;
    import java.util.stream.IntStream;
    import java.util.Arrays;
    import java.util.Collections;
     
    public class RelevéSystjour1 {
    	 static int total = 0;
    	 //Structure du tableau pour sélectionner une tranche ou plage.
    	 public static int[] tableauDecoup(int[] array, int startIndex, int endIndex) {
    		    int[] sortieTranche = IntStream.range(startIndex, endIndex).map(i -> array[i]).toArray();
    		    return sortieTranche;
    	 }
     
    		public static void main(String[] args) throws IOException {
     
    			CalculTotaletMoyenne();	//appel de méthode
     
     
    	}//fin de la fonction Main
     
    		public static int CalculTotaletMoyenne() {
     
    			 // lecture du fichier texte
    			try {
    			FileInputStream chiffres = new FileInputStream("C:/Users/willy/Documents/dataSystjour1.txt");
    			InputStreamReader inputStr = new InputStreamReader(chiffres);
    			BufferedReader bufredR = new BufferedReader(inputStr);
    			String ligne;
     
    			// découpe la liste du ficher txt avec virgule et espace avec split
    			while ((ligne = bufredR.readLine()) != null) {
    			String tableauDecoup[]=ligne.split(",");
    			System.out.println("Affiche la ligne issue du fichier txt + action split:  " + ligne);
     
    			  List<String> liste = Arrays.asList(tableauDecoup);
    				int[] intArray = new int[tableauDecoup.length];//lit tous les chiffres
    				for(int i=0; i<intArray.length; i++) 
    				{
    				intArray[i]=Integer.parseInt(tableauDecoup[i]);//transforme les chiffres en int
    				System.out.println("Transforme les String en int:  " + intArray[i]);
    					}//fin de ce qu'il y a dans la boucle
     
    				//*********************afficher une tranche ou plage*******************************
    			    int startIndex = 0, endIndex = 5;
    			    int[] sortieTranche = tableauDecoup(intArray, startIndex, endIndex + 1);
    			    System.out.println("Tranche délimitée jour 1 : " + Arrays.toString(sortieTranche));//jour 1
     
    			    //**************************** moyenne systolique du jour 1***********************
    			    int total1 = 0;
    			    for(int i = 0; i < sortieTranche.length; i++) {
    			    	total1 = total1 + sortieTranche[i];
    			    }
    			    int moyenne = total1 / sortieTranche.length;
    			    System.out.println("Moyenne systolique jour1:    " + moyenne);
     
    			    //*************************** moyenne systolique du jour 1**************************
    			    int startIndex1 = 6, endIndex1 = 11;
    			    int[] sortieTranche1 = tableauDecoup(intArray, startIndex1, endIndex1 + 1);
    			    System.out.println("Tranche délimitée jour 2: " + Arrays.toString(sortieTranche1));//jour 2
     
    			  //*************************** moyenne systolique du jour 2*****************************
    			    int total2 = 0;
    			    for(int i = 0; i < sortieTranche.length; i++) {
    			    	total2 = total2 + sortieTranche1[i];
    			    }
    			    int moyenne2 = total2 / sortieTranche1.length;
    			    System.out.println("Moyenne systolique jour2:    " + moyenne2);
    			    //**************************** moyenne systolique du jour 2**************************
     
    			    int startIndex2 = 12, endIndex2 = 17;
    			    int[] sortieTranche2 = tableauDecoup(intArray, startIndex2, endIndex2 + 1);
    			    System.out.println("Tranche délimitée jour 3: " + Arrays.toString(sortieTranche2));//jour 3
     
    			    //********************************* moyenne systolique du jour 3****************************
    			    int total3 = 0;
    			    for(int i = 0; i < sortieTranche2.length; i++) {
    			    	total3 = total3 + sortieTranche2[i];
    			    }
    			    int moyenne3 = total3 / sortieTranche2.length;
    			    System.out.println("Moyenne systolique jour3:    " + moyenne3);
     
    			    //********************************** moyenne systolique du jour 3****************************
     
    			    //************** afficher tranche ou plage avec moyenne de chaque tranche ou plage*************	
     
    			    //calcul du total concernant la liste
    				int total = liste.stream().mapToInt(Integer::valueOf).sum();//calcul le total
    				System.out.println("Calcule le total des 3 jours de relevés:  			" + total);
    				System.out.println("Calcule la moyenne des 18 relevés Systolique:  		" + total/18); 
    				//fin de calculer le total de la liste
     
    		      //  affichage de la tension la lus élevée et la plus basse
    		        System.out.println("La tension systolique la plus basse:  " + Collections.min(liste));
    		        System.out.println("La tension systolique la plus élevée:  " + Collections.max(liste));
     
     
    			}//fin while
     
    			bufredR.close();//ferme le fichier
     
    			}// fin de try 
     
    			catch (Exception e) {
    			System.out.println(e.toString());
    			}//fin de catch 
     
    			return total/18;
     
     
     
    		}// fin de la méthode CalculTotaletMoyenne
     
     
     
    }//fin classe Relevé
    La sortie sur console eclipse
    Code console : 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
    Affiche la ligne issue du fichier txt + action split:  144,140,135,155,141,146,147,155,141,150,143,129,149,137,137,149,142,136
    Transforme les String en int:  144
    Transforme les String en int:  140
    Transforme les String en int:  135
    Transforme les String en int:  155
    Transforme les String en int:  141
    Transforme les String en int:  146
    Transforme les String en int:  147
    Transforme les String en int:  155
    Transforme les String en int:  141
    Transforme les String en int:  150
    Transforme les String en int:  143
    Transforme les String en int:  129
    Transforme les String en int:  149
    Transforme les String en int:  137
    Transforme les String en int:  137
    Transforme les String en int:  149
    Transforme les String en int:  142
    Transforme les String en int:  136
    Tranche délimitée jour 1 : [144, 140, 135, 155, 141, 146]
    Moyenne systolique jour1:    143
    Tranche délimitée jour 2: [147, 155, 141, 150, 143, 129]
    Moyenne systolique jour2:    144
    Tranche délimitée jour 3: [149, 137, 137, 149, 142, 136]
    Moyenne systolique jour3:    141
    Calcule le total des 3 jours de relevés:  			2576
    Calcule la moyenne des 18 relevés Systolique:  		143
    La tension systolique la plus basse:  129
    La tension systolique la plus élevée:  155
    

    Je ne marque pas résolu car mon code n'est pas terminé
    a +++ cordialement
    rapidego

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

Discussions similaires

  1. [uiimport] Difficultés pour importer un tableau
    Par SimpleGUI dans le forum MATLAB
    Réponses: 8
    Dernier message: 29/09/2017, 15h28
  2. Difficulté pour travaillé un tableau ou un objet en Javascript
    Par juju742 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/04/2017, 14h56
  3. difficultés pour convertir une string en date
    Par p1xl_01 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 07/06/2011, 18h18
  4. Problème pour convertir un tableau de byte en un inputStream.
    Par fab76000 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/04/2010, 12h39
  5. Convertir char ou String en Int
    Par Invité(e) dans le forum ASP
    Réponses: 2
    Dernier message: 10/06/2008, 17h17

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