Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/03/2008, à 17:17

rniamo

java, ça compile...pas longtemps [résolu]

Bonjour,

je me suis mis au java, j'ai lu un cours et pris en note dans une classe quelques point mais ma classe ne compile plus quand j'ai besoin des classes : StringTokenizer, FileWriter, FileReader, BufferedReader. (java.io.* en fait, pourtant je fais un import java.io.*).

Sinon je me demandais si on pouvais récupérer une valeur d'un fichier comme un double sans avoir besoin de convertir un String.

Je sais ça doit pas être compliqué mais là je sèche.

Dernière modification par rniamo (Le 13/03/2008, à 21:55)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#2 Le 13/03/2008, à 20:16

obiwankennedy

Re : java, ça compile...pas longtemps [résolu]

import java.lang.*;
import java.io.*;
import java.util.StringTokenizer;

public class ClassTest
{    
    // variables de la classe (des instances)
    private boolean est_test;
    
    // variables de la classe (et non des instances), il faut utilsier le nom de la Classe pr y accéder
    private static int nb_tot;
    
    // cte de classe, idem variable de classe, accès via le nom de la classe
    private static final int init=0;
    
    // Construteurs de la classe
    public ClassTest()
    {
        est_test=true;
        ClassTest.nb_tot++;
    }
    
    public ClassTest(boolean b)
    {
        est_test=b;
    }
    
    // méthode de classe, idem accès par nom classe (static)
    public static double mc(int a)
    {
        return (double)a;
    }
    
    // fonction main()
    public static void main(String[] arg)
    {
        /* tous les types simple de Java */
        byte octet=0;
        short deux_octets=0;
        int quatre_octets=0;
        long huit_octets=0;
        
        float quatre_octets_r=0;
        double huit_octets_r=0;
        
        boolean bool=false;
        
        char car='a';
        
        final boolean booleen_tj_vrai=true;
        
        /* Affichage des valeurs initiales */
        System.out.println("byte="+octet);
        System.out.println("short="+deux_octets);
        System.out.println("int="+quatre_octets);
        System.out.println("long="+huit_octets);
        System.out.println("float="+quatre_octets_r);
        System.out.println("double="+huit_octets_r);
        System.out.println("boolean="+bool);
        System.out.println("char="+car);
        System.out.println("boolean final="+booleen_tj_vrai);
        System.out.println();
        
        /* Tableaux  type[] nom; !!! pas de dimension ds [] */
        int[][] tableau_de_int; // déclaration.
        tableau_de_int=new int[3][2]; // tableau_de_int a 3 éléments. Initialisation des cases à 0 (pr types simples)
        for(int i=0;i<tableau_de_int.length;i++)
            for(int j=0;j<tableau_de_int[i].length;j++)
                System.out.println("tableau_de_int["+i+"]["+j+"]="+tableau_de_int[i][j]);
        System.out.println();
        
        //- équivalent à -//
        int[] tableau_de_int2={3,1,4}; // déclaration et initialisation en même temps
        for(int i=0;i<tableau_de_int2.length;i++)
            System.out.println("tableau_de_int["+i+"]="+tableau_de_int2[i]);
        System.out.println();
        
        /* tests conditionnels */
        if (bool)
            System.out.println("bool est vrai");
        else
        {
            System.out.println("bool est faux");
            bool=!bool;
            System.out.println("maintenant il est "+bool);
        }
        System.out.println();
        
        /* boucle Pour */
        for (int i=0;i<3;i++)
        {
            octet++;
            System.out.println("byte="+octet);
        }
        System.out.println();
        
        //- Pour Pr chaque ; n'affecte que les éléments de la collection -//
        for(int i : tableau_de_int2)
        {
            System.out.println("tab[]="+i);
        }
        System.out.println();
        
        /* boucle Tq */
        while(bool)
        {
            deux_octets++;
            System.out.println("short="+deux_octets);
            bool=!bool;
        }
        System.out.println();
        
        do
        {
            quatre_octets--;
            System.out.println("int="+quatre_octets);
            bool=!bool;
        }while(!bool);
        System.out.println();
        
        /* Switch */
        switch ((int)huit_octets)
        {
            case 0:
                System.out.println("le long est toujours nul !");
            break;
            
            default:break;
        }
        System.out.println();
        
        /* Chaînes de caractères */
        String chaine="test chaine de caractères", ch2=" chaine 2";
        System.out.println("ma chaine est : \""+chaine+"\" et a "+chaine.length()+" caractères.");
        System.out.println("test concatenation : \""+(chaine+ch2)+"\"");
        System.out.println();
        
        /* Chaines modifiables */
        StringBuffer strBuf=new StringBuffer(5); // lg 3
        StringBuffer strBuf2=new StringBuffer("teste"); // init directe
        String recup=strBuf2.toString(); // conversion en String
        strBuf2.append(octet); // surcharge
        strBuf2.insert(2,deux_octets); // ajout à la case 2
        System.out.println("StringBuffer \""+strBuf2+"\"");
        System.out.println();
        
        /* Chaines décomposables */
        StringTokenizer ch_decomp=new StringTokenizer("je vais tester sur les e et les t","te");
        while(ch_decomp.hasMoreElements())
            System.out.println(ch_decomp.nextElement());
        
        /* Sortie fichier */
        // Ecriture
        FileWriter fichier=new FileWriter("/home/rniamo/Bureau/test");
        fichier.write("j'écrit dedans c'est magnifique\noctet="+octet);
        fichier.close();
        
        /* Entrée fichier */
        //Lecture
         BufferedReader f=new BufferedReader(new FileReader("/home/rniamo/Bureau/test"));
        int c;
        while((c=f.read())!=-1)
            System.out.println(c);
        f.close();
        
        /* Lire entrée std (clavier) */
        String str;
        try
        {
            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            str=bf.readLine();
            bf.close();
        }
        catch(Exception e)
        {
            System.out.println("erreur "+e);
        }
        
        if (str!=null)
        {
            System.out.println(str+"\n");
        }
        
        
        
        /* libération de la mémoire */
        System.gc();        
        
    }
}

j'ai modifié quelques bricoles, le nom de certaines variables mal orthographiées ajouter l'import de java.util.Machin truc;

ta classe ne compile pas encore il faut ajouter des try /catch autour des fonctions de lecture/ecriture;

mais je trouve que tu attaques un peu fort le java en attanquant directement la lecture/ecriture en fichier en fichier.

Dernière modification par obiwankennedy (Le 13/03/2008, à 21:03)


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#3 Le 13/03/2008, à 20:47

rniamo

Re : java, ça compile...pas longtemps [résolu]

Merci beaucoup !!!

Voici une version qui compile, les erreurs ne sont pas traiter (ce n'est pas le but du code) mais ça permet d'avoir un aide mémoire.

J'ai une dernière question que j'ai oublié tout à l'heure : est-ce qu'en java on peut récupérer les caractères d'une chaîne un peu comme en C (via un tableau).

Code "corrigé" :

import java.lang.*;
import java.io.*;
import java.util.StringTokenizer;

public class ClassTest
{    
    // variables de la classe (des instances)
    private boolean est_test;
    
    // variables de la classe (et non des instances), il faut utilsier le nom de la Classe pr y accéder
    private static int nb_tot;
    
    // cte de classe, idem variable de classe, accès via le nom de la classe
    private static final int init=0;
    
    // Construteurs de la classe
    public ClassTest()
    {
        est_test=true;
        ClassTest.nb_tot++;
    }
    
    public ClassTest(boolean b)
    {
        est_test=b;
    }
    
    // méthode de classe, idem accès par nom classe (static)
    public static double mc(int a)
    {
        return (double)a;
    }
    
    // fonction main()
    public static void main(String[] arg)
    {
        /* tous les types simple de Java */
        byte octet=0;
        short deux_octets=0;
        int quatre_octets=0;
        long huit_octets=0;
        
        float quatre_octets_r=0;
        double huit_octets_r=0;
        
        boolean bool=false;
        
        char car='a';
        
        final boolean booleen_tj_vrai=true;
        
        /* Affichage des valeurs initiales */
        System.out.println("byte="+octet);
        System.out.println("short="+deux_octets);
        System.out.println("int="+quatre_octets);
        System.out.println("long="+huit_octets);
        System.out.println("float="+quatre_octets_r);
        System.out.println("double="+huit_octets_r);
        System.out.println("boolean="+bool);
        System.out.println("char="+car);
        System.out.println("boolean final="+booleen_tj_vrai);
        System.out.println();
        
        /* Tableaux  type[] nom; !!! pas de dimension ds [] */
        int[][] tableau_de_int; // déclaration.
        tableau_de_int=new int[3][2]; // tableau_de_int a 3 éléments. Initialisation des cases à 0 (pr types simples)
        for(int i=0;i<tableau_de_int.length;i++)
            for(int j=0;j<tableau_de_int[i].length;j++)
                System.out.println("tableau_de_int["+i+"]["+j+"]="+tableau_de_int[i][j]);
        System.out.println();
        
        //- équivalent à -//
        int[] tableau_de_int2={3,1,4}; // déclaration et initialisation en même temps
        for(int i=0;i<tableau_de_int2.length;i++)
            System.out.println("tableau_de_int["+i+"]="+tableau_de_int2[i]);
        System.out.println();
        
        /* tests conditionnels */
        if (bool)
            System.out.println("bool est vrai");
        else
        {
            System.out.println("bool est faux");
            bool=!bool;
            System.out.println("maintenant il est "+bool);
        }
        System.out.println();
        
        /* boucle Pour */
        for (int i=0;i<3;i++)
        {
            octet++;
            System.out.println("byte="+octet);
        }
        System.out.println();
        
        //- Pour Pr chaque ; n'affecte que les éléments de la collection -//
        for(int i : tableau_de_int2)
        {
            System.out.println("tab[]="+i);
        }
        System.out.println();
        
        /* boucle Tq */
        while(bool)
        {
            deux_octets++;
            System.out.println("short="+deux_octets);
            bool=!bool;
        }
        System.out.println();
        
        do
        {
            quatre_octets--;
            System.out.println("int="+quatre_octets);
            bool=!bool;
        }while(!bool);
        System.out.println();
        
        /* Switch */
        switch ((int)huit_octets)
        {
            case 0:
                System.out.println("le long est toujours nul !");
            break;
            
            default:break;
        }
        System.out.println();
        
        /* Chaînes de caractères */
        String chaine="test chaine de caractères", ch2=" chaine 2";
        System.out.println("ma chaine est : \""+chaine+"\" et a "+chaine.length()+" caractères.");
        System.out.println("test concatenation : \""+(chaine+ch2)+"\"");
        System.out.println();
        
        /* Chaines modifiables */
        StringBuffer strBuf=new StringBuffer(5); // lg 3
        StringBuffer strBuf2=new StringBuffer("teste"); // init directe
        String recup=strBuf2.toString(); // conversion en String
        strBuf2.append(octet); // surcharge
        strBuf2.insert(2,deux_octets); // ajout à la case 2
        System.out.println("StringBuffer \""+strBuf2+"\"");
        System.out.println();
        
        /* Chaines décomposables */
        StringTokenizer ch_decomp=new StringTokenizer("je vais tester sur les e et les t","te");
        while(ch_decomp.hasMoreElements())
            System.out.println(ch_decomp.nextElement());
        
        /* Sortie fichier */
        // Ecriture
        try
        {
	        FileWriter fichier=new FileWriter("/home/rniamo/Bureau/test");
        	fichier.write("j'écrit dedans c'est magnifique\noctet="+octet);
        	fichier.close();
        }
        catch(IOException e)
        {
        }
        
        /* Entrée fichier */
        //Lecture
        try
        {
	        BufferedReader f=new BufferedReader(new FileReader("/home/rniamo/Bureau/test"));
        	int c;
        	while((c=f.read())!=-1)
        	    System.out.println(c);
        	f.close();
        }
        catch(IOException e)
        {
        
        }
        
        /* Lire entrée std (clavier) */
        String str=null;
        try
        {
            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            str=bf.readLine();
            bf.close();
        }
        catch(Exception e)
        {
            System.out.println("erreur "+e);
        }
        
        if (str!=null)
        {
            System.out.println(str+"\n");
        }
        
        
        
        /* libération de la mémoire */
        System.gc();        
        
    }
}

< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#4 Le 13/03/2008, à 20:58

obiwankennedy

Re : java, ça compile...pas longtemps [résolu]

oui c'est possible, tu peux utiliser la méthode = toCharArray()  qui te renvoi un Char[] donc apres tu l'utilises comme en C donc

machaine = "super"
char a[]= machaine.toCharArray();
System.out.println(a[0]);//affiche s

sinon tu as .charAt(int index)
qui te renvoi un caractère donc

machaine = "super"

System.out.println(machaine.charAt(0));//affiche s

pour plus de détails, et pour ne pas bloqué sur un problème d'import ou de nom de méthode.
Apprends a lire la javadoc (elle doit devenir ta meilleure amie)
http://java.sun.com/javase/6/docs/api/

Dernière modification par obiwankennedy (Le 13/03/2008, à 21:02)


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#5 Le 13/03/2008, à 21:56

rniamo

Re : java, ça compile...pas longtemps [résolu]

ok, merci beaucoup obiwankennedy.;)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne