Convertir un string en float

Résolu/Fermé
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015 - 15 mars 2015 à 12:12
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015 - 15 mars 2015 à 18:04
bonjour,
j'utilise un jtable qui contient des String et des Float
j'ai besoin de convertir leur contenue en float
j'ai utilisé cette fonction mais ça na pas marché

String min1 =(table.getValueAt(0,0).toString());
System.out.println("min=1"+min1);
System.out.println("ccoucou="+Float.valueOf(min1.trim().floatValue());

Pourriez vous m'aider ?
merci beaucoup.

4 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 mars 2015 à 12:18
Bonjour,

System.out.println("coucou="+Float.valueOf(min1));
devrait suffire.
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 13:28
Bonjour,
non ça na pas marché j'ai essayé ça en premier , puisque mes chaines sont des caractères de types "sunny" pas de type "555" , ça ne marche pas et je ne trouve pas la solution
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 mars 2015 à 13:49
mes chaines sont des caractères de types "sunny" pas de type "555"
Ça veut dire quoi ça ? Que tu peux avoir n'importe quel phrase dans ton String ?
Alors pourquoi vouloir les convertir en float ? Ça n'a pas de sens...
Qu'est-ce que tu veux faire exactement ?
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 14:16
bonjour,
je veux les convertir en float "ou bien les remplacer par des float c'est plus juste"
par la suite je vais normaliser les valeurs ( c'est de les mettre dans un intervalle entre 0 et 1
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
Modifié par KX le 15/03/2015 à 14:25
bonjour,
j 'ai essayé de les remplacer par des numéro
je lit un fichier .txt
try{
   InputStream ips=new FileInputStream(fichier); 
   InputStreamReader ipsr=new InputStreamReader(ips);
   BufferedReader br=new BufferedReader(ipsr);
   String ligne;
   j=0;
    
    k=0;
    
   while ((ligne=br.readLine())!=null )
   {
    //System.out.println("la ligne est "+ligne);
     
     tab1= ligne.split(",");
       for(i=0;i<tab1.length;i++)
       {
   //  System.out.println("attribut=  "+tab1[i]);
        if(tab1[i]=="sunny") tab1[i]="5";
        if(tab1[i]=="overcast") tab1[i]="4";
        if(tab1[i]=="rainy") tab1[i]="5";
        tab[k][i]=tab1[i];
       }   
     k++;
   }

mais ça n as pas marché
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 mars 2015 à 14:45
Tu ne peux pas comparer la valeur de deux String avec
==
c'est uniquement fait pour comparer l'égalité des deux références, savoir si c'est le même objet, mais puisque les objets sont issus d'un split ils seront forcément différents, il vaut donc mieux utiliser la méthode equals

for(i=0;i<tab1.length;i++)
{
    //  System.out.println("attribut=  "+tab1[i]);
    if (tab1[i].equals("sunny")
        tab1[i]="5";
    else if(tab1[i].equals("overcast")
        tab1[i]="4";
    else if(tab1[i].equals("rainy")
        tab1[i]="5";

    tab[k][i]=tab1[i];
}   

Si tu es en Java 7 tu peux aussi faire un switch sur tes valeurs :

for(i=0;i<tab1.length;i++)
{
    //  System.out.println("attribut=  "+tab1[i]);
    String str = tab1[i];
    switch (tab1[i])
    {
        case "sunny":
        case "rainy":
            str="5";
            break;
        case "overcast":
            str="4";
            break;
    }   
    tab[k][i]=str;
}

En terme de conception on pourrait même faire encore mieux, en faisant un enum qui prendrait chacun de tes cas et leur valeur associée.

enum Toto 
{
    SUNNY(5), RAINY(5), OVERCAST(4);

    private final int n;

    Toto(int value)
    {
        n = value;
    }
	
    public int getValue()
    {
        return n;
    }
}

public static String getTotoValue(String str)
{
    try
    {
        Toto toto = Toto.valueOf(str.toUpperCase());
        int n = toto.getValue();
        return String.valueOf(n);
    }
    catch (Exception e) {
        return str;
    }
}

for(i=0;i<tab1.length;i++)
{
    tab[k][i] = getTotoValue(tab1[i]);
}

Evidemment, il serait plus logique de gérer directement tes float avec l'un ou l'autre de ces mécanismes plutôt que de passer par un String intermédiaire.
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 14:28
bonjour,
j ai fait ça
while ((ligne=br.readLine())!=null )
{
//System.out.println("la ligne est "+ligne);

tab1= ligne.split(",");
for(i=0;i<tab1.length;i++)
{
System.out.println("attribut= "+tab1[i]);
String str1=tab1[i];
String str2="sunny";
if(str1.equals(str2))
{tab1[i]="5"; System.out.println("ok");

}
et ça marché :)
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 18:04
merci beaucoup.
0
miloko22 Messages postés 30 Date d'inscription jeudi 12 décembre 2013 Statut Membre Dernière intervention 15 mars 2015
15 mars 2015 à 18:04
merci beaucoup...
0