#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