Convertir un string en float

Résolu
miloko22 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -  
miloko22 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

System.out.println("coucou="+Float.valueOf(min1));
devrait suffire.
0
miloko22 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
merci beaucoup.
0
miloko22 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup...
0