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 :

Conversion d'un String hex en int ne fonctionne pas


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Conversion d'un String hex en int ne fonctionne pas
    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
    package com.allofjade.jadedex;
     
    import java.io.InputStream;
    import java.util.Scanner;
     
    import android.content.Context;
    import android.util.Log;
     
     
    public class Lecteur_CSV {
     
    	public void lancer_lecture(Context contexte) {
     
    		InputStream is = contexte.getResources().openRawResource(R.raw.creatureslv1);
    		Scanner sc = new Scanner(is);
    		int total_lignes = 0;
     
    		{
    			// le délimiteur de ligne est une , suivie d'un retour à la ligne
    			sc.useDelimiter(",\n");
     
    			// Passage sur chaque créature pour récupérer les valeurs
    			while (sc.hasNext())
    			{
    				total_lignes++;
     
    				String CSV_Creature = sc.next();
    				// Découpage de la ligne parcourue
    				String[] CSV_Creature_Split = CSV_Creature.split(";");
     
    				creature creat = new creature();
    				creat.setNumero(Integer.parseInt(CSV_Creature_Split[0], 16));
    				creat.setNom(CSV_Creature_Split[1]);
    				creat.setPV(Integer.valueOf(CSV_Creature_Split[2], 16).intValue());
    				creat.setMana(Integer.valueOf(CSV_Creature_Split[3], 16).intValue());
    				creat.setAttaque(Integer.valueOf(CSV_Creature_Split[4], 16).intValue());
    				creat.setAttaque_max(Integer.valueOf(CSV_Creature_Split[5], 16).intValue());
    				creat.setDefense(Integer.valueOf(CSV_Creature_Split[6], 16).intValue());
    				creat.setDefense_max(Integer.valueOf(CSV_Creature_Split[7], 16).intValue());
    				creat.setAttaque_magique(Integer.valueOf(CSV_Creature_Split[8], 16).intValue());
    				creat.setAttaque_magique_max(Integer.valueOf(CSV_Creature_Split[9], 16).intValue());
    				creat.setDefense_magique(Integer.valueOf(CSV_Creature_Split[10], 16).intValue());
    				creat.setDefense_magique_max(Integer.valueOf(CSV_Creature_Split[11], 16).intValue());
    				creat.setVitesse(Integer.valueOf(CSV_Creature_Split[12], 16).intValue());
    				creat.setVitesse_max(Integer.valueOf(CSV_Creature_Split[13], 16).intValue());
    				creat.setTaux_PV(Integer.valueOf(CSV_Creature_Split[15], 16).intValue());
    				creat.setTaux_PV_max(Integer.valueOf(CSV_Creature_Split[16], 16).intValue());
    				creat.setTaux_Mana(Integer.valueOf(CSV_Creature_Split[17], 16).intValue());
    				creat.setTaux_Attaque(Integer.valueOf(CSV_Creature_Split[18], 16).intValue());
    				creat.setTaux_Defense(Integer.valueOf(CSV_Creature_Split[19], 16).intValue());
    				creat.setTaux_Attaque_magique(Integer.valueOf(CSV_Creature_Split[20], 16).intValue());
    				creat.setTaux_Defense_magique(Integer.valueOf(CSV_Creature_Split[21], 16).intValue());
    				creat.setTaux_Vitesse(Integer.valueOf(CSV_Creature_Split[22], 16).intValue());
    				creat.setSpecial_1_1(Integer.valueOf(CSV_Creature_Split[23], 16).intValue());
    				creat.setSpecial_1_2(Integer.valueOf(CSV_Creature_Split[24], 16).intValue());
    				creat.setSpecial_1_3(Integer.valueOf(CSV_Creature_Split[25], 16).intValue());
    				creat.setSpecial_1_4(Integer.valueOf(CSV_Creature_Split[26], 16).intValue());
    				creat.setSpecial_2_1(Integer.valueOf(CSV_Creature_Split[27], 16).intValue());
    				creat.setSpecial_2_2(Integer.valueOf(CSV_Creature_Split[28], 16).intValue());
    				creat.setSpecial_2_3(Integer.valueOf(CSV_Creature_Split[29], 16).intValue());
    				creat.setSpecial_2_4(Integer.valueOf(CSV_Creature_Split[30], 16).intValue());
    				creat.setSpecial_3_1(Integer.valueOf(CSV_Creature_Split[31], 16).intValue());
    				creat.setSpecial_3_2(Integer.valueOf(CSV_Creature_Split[32], 16).intValue());
    				creat.setSpecial_3_3(Integer.valueOf(CSV_Creature_Split[33], 16).intValue());
    				creat.setSpecial_3_4(Integer.valueOf(CSV_Creature_Split[34], 16).intValue());
    				creat.setSpecial_4_1(Integer.valueOf(CSV_Creature_Split[35], 16).intValue());
    				creat.setSpecial_4_2(Integer.valueOf(CSV_Creature_Split[36], 16).intValue());
    				creat.setSpecial_4_3(Integer.valueOf(CSV_Creature_Split[37], 16).intValue());
    				creat.setSpecial_4_4(Integer.valueOf(CSV_Creature_Split[38], 16).intValue());
    				creat.setSpecial_5_1(Integer.valueOf(CSV_Creature_Split[39], 16).intValue());
    				creat.setSpecial_5_2(Integer.valueOf(CSV_Creature_Split[40], 16).intValue());
    				creat.setSpecial_5_3(Integer.valueOf(CSV_Creature_Split[41], 16).intValue());
    				creat.setSpecial_5_4(Integer.valueOf(CSV_Creature_Split[42], 16).intValue());
    				creat.setMagie_1(Integer.valueOf(CSV_Creature_Split[43], 16).intValue());
    				creat.setMagie_2(Integer.valueOf(CSV_Creature_Split[44], 16).intValue());
    				creat.setMagie_3(Integer.valueOf(CSV_Creature_Split[45], 16).intValue());
     
     
    			}
    			sc.close();
    			Log.i("Lecture du fichier CSV", "Ajout de " + (total_lignes -1) + "créatures en mémoire réussi.");
    		}
    	}
    }
    Bonsoir, ouverture d'un nouveau sujet pour lequel j'ai l'impression d'être le seul a avoir eu l'erreur sur le net...

    Donc j'ai tenté d'utiliser les deux méthodes ( lignes 32 et 33 ), mais l'application plante à chaque fois avec un joli "Unable to parse '1' as integer", si quelqu'un pouvait m'expliquer pourquoi

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    probablement à cause des guillement qui restent autour du 1? Parce que
    1 c'est un entier mais
    '1' c'est une chaine de 3 caractère dont un seul est un nombre

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Je testerais ce soir, là je suis en pause au boulot, mais je doute que ça fonctionne, car quand je mets des points d'arrêt, CSV_Creatures_Split[] contient les bonnes valeurs sans guillemets, mais ça peut valoir le coup d'essayer

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Dans ce cas, essaye un System.out.println(CSV_Creature_Split[0]); pour te rendre compte...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    C'est correctement splitté, j'ai même pas mal avancé dans le programme, je peux donc afficher tous mes éléments en tant que string à l'écran: aucun n'a de " ou de ' ou quoi que ce soit d'autre, tous des string de nombres hexa, hormis le nom et les magies ( nom est un string, magie_1, 2 et 3 sont en binaire )

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Est ce que tu peux poster la stacktrace de l'exception complete?

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Pas de caractères spéciaux qui traînent dans ton tableau, genre un \r ou un \t par exemple ?

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ou tout simplement un espace, comme on en voyait dans l'exemple -_-°.

    Quand on a un doute, il ne faut pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(monTexte);


    Il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.format("[%s]\n", monTexte);
    (parfois même ça ça ne suffit pas. Mais en général, si.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Conversion de mois string en mois int +1
    Par choubak dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/07/2007, 09h10
  2. Servlet: problème de conversion d'un string en INT
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/11/2006, 10h44
  3. * du SQL pour un INT ? % ne fonctionne pas...
    Par Allen dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/04/2006, 11h23
  4. [Débutant] Conversion d'un String en Int
    Par chleuh dans le forum Langage
    Réponses: 9
    Dernier message: 30/12/2004, 13h33
  5. Réponses: 2
    Dernier message: 21/06/2004, 15h55

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