Mon API est une Appli Texte/Image et le problème est qu'il m'est impossible d'afficher l'image
Tu me dis que le problème vient de la ligne 180, qui est une méthode d'un de tes objets, soit ta fonctionne n'est pas correcte, je ne connais pas ton code, soit ton image n'est pas bien récupérée.
Par contre, je doute que cela compile, tu fait appelle la méthode length sur CodeD qui est de type int. C'est peu probable.
Et attention a la notation, je te conseille de te renseigner sur le CamelCase et la syntaxe Java (qui est la même pour bien d'autre langage), une variable doit commencer par une minuscule (ou _ $)
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Merci pour tes réponses, je viens juste de commencer la programmation en Java.
Dans mon code (si tu veux le voir, il est dans les commentaires précédents), j'essaye de transformer le code Ascii de mes chiffres à coder en binaire afin d'ensuite pouvoir appliquer une composante noire ou blanche à mes 0 ou 1 dans le but d'afficher des bandes pour obtenir un code barre.
Mon code me semble correct, c'est juste l'affichage que je n'obtiens pas, il y a une erreur d’instanciation et de déclaration qui se situerait à cet endroit il me semble
Je te rappelle que ta variable CodeD est déclaré comme un int, mais que tu essaies d'utiliser la méthode length sur cette variable, ce qui n'est pas possible sur un type primitif (char, int, long, ...). Donc ton code ne va pas pouvoir compiler pour commencer.
Pour la création de ton image, je n'ai pas fait d'image depuis un bout de temps, mais je peux essayer demain dans la journée.
Je te conseille de nettoyer ton code pour y voir plus clair, de donner des noms plus logique a tes variables, avoir "a b y n m x" est la plus mauvaise des idées pour que quelqu'un comprenne ton travail, ou toi même demain matin d'ailleurs.
Continue en MP, pour ne pas abuser sur le forum du cours
- Edité par AxelHuberty 24 janvier 2016 à 23:09:02
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Voici mon code pour réaliser un code barre mais celui ci ne marche quelqu'un pourrait il m'aider ?
Je ne sais pas trop, tu veux qu'il court ?
Plus sérieusement, essaye d'expliquer ce qui ne va pas pour commencer.
@Nucro, je serais tenté de te donner comme idée :
JavaFX n'était pas trop apprécié lors de la création du MOOC. Personnellement, j'utilise encore Swing par manque de temps (apprentissage d'une autre API).
Swing se retrouve dans de nombreuses applications, donc c'est plus pratique de connaitre une solution largement utilisé.
Et je ne dirais pas que java utilise JavaFX par défaut, juste que Swing est désormais déprécié, en dehors des bugs qui seront encore corrigé. Mais dans ce sens, tu peux te demander pourquoi certains utilisent encore AWT pour leurs interfaces (si si, je vous assure que j'ai vu ça il y a peu, heureusement ce collègue fait du web en général ;-) ).
Swing n'est simplement plus développé (sauf pour le debug).
Ce que je veux dire, c'est que cela n'est tant utilisé. Oracle veut, mais les dev que je connaisse sont resté avec Swing vu le peu d'interface créé (avec Java du moins).
Je sais que JavaFX utilisait d'abord des fichiers en XML (ou XHTML même je pense) mais finalement est repassé a un code similaire a Swing mais avec une gestion différente, donc on se retrouve avec les même problème que Swing mais avec un apprentissage supplémentaire.
Mais je ne vais pas en dire plus car je suis resté a Swing par facilité. Peut-être que d'autre, qui l'utilise, pourront dire s'il est plus pratique.
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Cafouillage ... quelqu'un pourrait-il m'expliquer ce qui ne va pas dans ce bout de code simple concernant les enum.
Je débute comme vous le comprenez !
L'exécution de TestGarage0() renvoie toujours RENO....
Je ne sais plus comment modifier, je crois que j'y perd mon latin, ou alors il y a des concepts de base que je n'ai pas captés ! et ça commence à me Gonfl...
Merci à ceux qui voudront bien me passer le petit tuyau qui débloquera ma situation.
Mon soucis est que j'aimerai enregistrer un tableau dans un fichier. Et plus tard pouvoir recuperer ou modifier les informations contenues via des accesseurs et des mutateurs.
Mon soucis est que j'aimerai enregistrer un tableau dans un fichier. Et plus tard pouvoir recuperer ou modifier les informations contenues via des accesseurs et des mutateurs.
MOoha.
Bonjour,
je ne comprends pas ta question. Ton tableau c'est un tableau d'entiers, de réels, d'objets?
Ton fichier, c'est un fichier texte, un fichier binaire?
Stp sois un peu plus explicite. Merci
- Edité par FarelWAMBATOUATSA 26 janvier 2016 à 8:45:28
Je viens enfin d'être corrigé pour le dernier TP du cours. Après avoir mis en place une gestion de DAO générique (ultra commenté), je reçois ma note
Si le dernier, qui vient de me corriger, se reconnait, peut-il expliquer son choix ?
Je peux reposter mon code si nécessaire mais je ne comprend pas pourquoi je n'ai pas plus... La structure de ma DAO gère les transactions lors des exceptions. Une classe abstraire s'occupe des transactions, les classes filles s'occupe de redéfinir la création des PreparedStatement. Chaque DAO était donc limité au strict nécessaire pour la lecture (la requete SQL, les paramètres à placer selon le type de requête, et la création de l'instance).
Des commentaires sont présents dans tout le code, le code est indenté (merci au cours du JavaEE qui fournissait son formatage )
S'il n'a pas compris mon code, j'avais laissé mon pseudo pour me contacter.
Je tiens tout de même a préciser que je suis développeur Java, j'ai quelque années d'expériences, donc je pense pouvoir écrire une DAO sans rougir. J'ai écris ce code en pensant au correcteur qui pourrait ne pas comprendre ma logique habituel donc j'ai simplifié la généricité au maximum.
- Edité par AxelHuberty 26 janvier 2016 à 10:58:32
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Je termine le TP1 Garage mais je rencontre un problème sur la lecture du fichier, je voulais afficher la liste de tous les voitures
try{
input = new ObjectInputStream(new BufferedInputStream( new FileInputStream( new File("Garage.txt"))));
System.out.println("*************************");
System.out.println("Affichage des voitures :");
System.out.println("*************************");
System.out.println(((List<Vehicule>)input.readObject()));
}
// si exception
catch (FileNotFoundException e) {
System.err.println("Probléme d'affichage ! ");
} catch (IOException e) {
System.err.println("Erreur de lecture !");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
Or j'ai une erreur
Exception in thread "main" java.lang.ClassCastException: com.garage.vehicule.Lagouna cannot be cast to java.util.List
at com.garage.Garage.Lecture(Garage.java:84)
at com.garage.Garage.(Garage.java:37)
at com.garage.Main.main(Main.java:29)
Le meilleur conseil que je peux donner avec ce genre d'exception, c'est de lire et comprendre le message (donc l'anglais )
Tu as bien compris qu'il s'agissait d'un problème de cast. En effet il trouve une instance de type Lagouna hors tu veux une List.
Je n'ai pas lu le code mais je pense pouvoir dire facilement que tu as enregistrés les véhicules dans ton fichier avec une boucle, un véhicule à la fois. Hors, il est précisé dans le cours, mais j'ai fait la même erreur la première fois, qu'on ne peut enregistrer qu'un objet par fichier (donc ils sont écrasé à chaque fois).
Ici, il ne faut pas enregistrer les véhicules mais le Garage au complet, la liste étant sérializable, tu pourras récupérer ton Garage au complet depuis le fichier.
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Bonjour, je planche sur le TP Garage, et je tourne pas mal en rond.
Quelqu'un peut-il m'aider à passer un cap.
Beaucoup de choses ne sont pas claires, limpides et je m'embrouille beaucoup entre les interfaces, classes abstraites et enum..
Pour les options je pense avoir un code qui "marche" à peu près (??).
Par contre je tourne en rond pour la la définition du moteur telle qu'elle doit marcher avec le programme de test comme par exemple : d4_1.setMoteur(new MoteurDiesel("200 Hdi", 25684.80d));
Voici mon code pour les classes :
Moteur
package GarageTP1;
public abstract class Moteur {
public String TypeMoteur;
public String cylindre;
public Double prix;
// constructeurs
public Moteur() {
}
public Moteur(String cylindre, Double prix) {
super();
this.cylindre = cylindre;
this.prix = prix;
}
public String getCylindre() {
return cylindre;
}
public void setCylindre(String cylindre) {
this.cylindre = cylindre;
}
public Double getPrix() {
return prix;
}
public void setPrix(Double prix) {
this.prix = prix;
}
}
TypeMoteur
package GarageTP1;
public enum TypeMoteur {
// Construction de l'énum TypeMoteur
DIESEL("Moteur diesel Common Rail DI."), ESSENCE("Moteur essence THP."), HYBRIDE(
"Moteur hybride Essence/électrique."), ELECTRIQUE("Moteur électrique.");
private String typeMoteur;
TypeMoteur(String typeMoteur) {
this.typeMoteur = typeMoteur;
}
public String getTypeMoteur() {
return typeMoteur;
}
}
MoteurDiesel
package GarageTP1;
public class MoteurDiesel extends Moteur {
//constructeurs modifiés MoteurDiesel
public MoteurDiesel () {
}
public MoteurDiesel (String cylindre, Double prix) {
super();
this.cylindre = cylindre;
this.prix = prix;
}
//MoteurDiesel("200 Hdi", 25684.80d));
}
Vehicule
package GarageTP1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Vehicule {
public Double prix;
public static String nom;
public static List<Object> options = new ArrayList<Object>();
public static String nomMarque;
// 1. créer fonction addOption(opt : Option) : void
// 2. créer fonction toString() String
// 3. créer fonction getMarque() : Marque
// 4. créer fonction getOptions() : list<Options>
// 5. créer fonction getPrix() : Double
// Constructeurs
public Vehicule() {
// TODO Auto-generated constructor stub
}
public Vehicule(String nom, Double prix) {
super();
this.prix = prix;
this.nom = nom;
}
public Double getPrix() {
return prix;
}
// getnomMarque
public static void getMarque() {
Marque m1 = Marque.RENO;
System.out.println(m1.getNomMarque());
}
// addOptions
public void addOption() {
}
// addOptions liste
public void addOption(GPS gps) {
options.add("GPS");
}
public void addOption(VitreElectique ve) {
options.add("Vitres Electriques");
}
public void addOption(SiegeChauffant sc) {
options.add("Sièges chauffants");
}
public void addOption(BarreDeToit bt) {
options.add("Barres de toit");
}
public void addOption(Climatisation clim) {
options.add("Climatisation auto");
}
// getoptions liste
public static void getOptions() {
for (Object opt : options) {
System.out.print("Ce véhicule est doté de l'option : " + opt + "\n");
}
}
public void setMoteur() {
new MoteurDiesel("200 Hdi", 25684.80d);
System.out.print("Dans setmoteurDiesel de Vehicule\n");
}
}
TestGarage0
package GarageTP1;
public class TestGarage0 {
public static void main(String[] args) {
Marque m1 = Marque.RENO;
System.out.println(m1.getNomMarque());
Vehicule lag1 = new Lagouna();
lag1.addOption(new GPS());
lag1.addOption(new SiegeChauffant());
lag1.addOption(new VitreElectique());
lag1.addOption(new BarreDeToit());
lag1.addOption(new Climatisation());
lag1.setMoteur(new MoteurDiesel("200 Hdi", 25684.80d));
Vehicule.getOptions ();
}
}
Erreur : The method setMoteur() in the type Vehicule is not applicable for the arguments (MoteurDiesel) sur lag1.setmoteur (new ... dans la classe TestGarage0 ci dessus..
Je ne sais pas comment modifier car je ne sais pas quel raisonnement adopter pour mettre en place le code adéquate !
Merci pour votre aide et si possible quelques explications qui me permettront de comprendre la gymnastique.
Si tu as suivi le diagramme fourni, ta classe Lagouna hérité bien de Vehicule. Tu peux voir dans Véhicule que la méthode setMoteur n'attends aucun paramètre, alors que dans la classe fourni (Garage), la méthode doit pouvoir recevoir le moteur (étant donnée que la méthode n'est rien d'autre qu'un setter.
Je te conseille de simplement modifier la méthode dans Vehicule en
public void setMoteur(Moteur moteur){
this.moteur = moteur;
}
public void adOption(Option option){ //Une méthode pour toutes les options }
C'est le corps d'un setter standard. Bien sur il faut ajouter ton attribut moteur dans vehicule, je ne pense pas l'avoir vu dans ta classe actuel.
Je vois quelques particularité dans ta classe Vehicule, ta liste attends des objets, alors que tu veux n'y stocker que des Options et surtout, ta classe n'a pas de variable d'instance, ce sont tous des attribut static.
Avec ces quelques indications, tu devrais pouvoir reprendre l
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Le meilleur conseil que je peux donner avec ce genre d'exception, c'est de lire et comprendre le message (donc l'anglais )
Tu as bien compris qu'il s'agissait d'un problème de cast. En effet il trouve une instance de type Lagouna hors tu veux une List.
Je n'ai pas lu le code mais je pense pouvoir dire facilement que tu as enregistrés les véhicules dans ton fichier avec une boucle, un véhicule à la fois. Hors, il est précisé dans le cours, mais j'ai fait la même erreur la première fois, qu'on ne peut enregistrer qu'un objet par fichier (donc ils sont écrasé à chaque fois).
Ici, il ne faut pas enregistrer les véhicules mais le Garage au complet, la liste étant sérializable, tu pourras récupérer ton Garage au complet depuis le fichier.
L'un d'entre vous pourrait-il m'expliquer comment coder un petit programme qui irait se connecter à un compte gmail avec le login et le password demandé dans une boite de dialogue interne au petit programme ?
En d'autre terme, un programme qui va tapper mon login et mdp tout seul et valide la saisie...
J'ai un petit problème lors de la création de mon constructeur de ma classe Utilisateur qui est "le fils" de la classe Personne:
Utilisateur(in login: string, in password : string, in personne : Personne)
Pouvez-vous m'aider s'il-vous-plaît ?
Voici le schéma ainsi que mon mon erreur :
Bonsoir,
Il faut savoir qu'en Java, quand tu crées une classe, son constructeur par défaut est créé automatiquement mais ça le reste si et seulement si tu ne crées pas de constructeur spécialisé pour cette classe. Or d'après ton diagramme des classes, tu as créé deux constructeurs spécialisés pour la super classe Personne de ce fait, elle ne dispose plus du constructeur par défaut créé implicitement. Pour pouvoir utiliser celui-ci (le constructeur par défaut), tu devras le créer de façon explicite dans la super classe Personne.
Bonjour j'aurais une question, voila mon prof nous a donné un projet d'exemple et il arrive a instancier une classe directement dans le cardlayout; cf : photo : http://www.upimg.fr/ih/ahfm.png
Moi j'ai essayé de faire pareil mais impossible, j'ai du passer par un cardlayout avec plusieurs JPanel
http://www.upimg.fr/ih/6rii.png
Si quelqu'un aurait une idée du comment ce serait super
PS : Ce n'est pas du code "fait main" mais plutot avec la fonction wysiwyg de swing
Il faut déjà faire attention, on ajoute les panels dans un panel ayant comme layout un CardLayout. Un layout ne contient pas de panel directement (ou même indirectement).
Je dirais que ton prof a créé une classe héritant de JPanel pour définir son objets et les composants contenu dedans, ainsi il ajoute à son "cardpanel" les instances de ses objets.
C'est le plus propre, je fais souvent ainsi, cela permet de réutiliser le même objet dans un autre écran, une dialog, ... si besoin.
J'espère t'avoir aidé.
Axel
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Je suis dans le chapitre les flux d'entrée-sortie et il y a une qqchose que je ne comprends pas : une des options de copie d'un fichier ( avec Files.copy() ) est la copie atomique :
StandardCopyOption.ATOMIC_MOVE : copie atomique
Quelqu'un pourrait me dire de quoi il s'agit ? je n'ai pas trouvé d'explication claire.
En fait j'ai une deuxième question sur ce chapitre et la section du Pattern Decorator :
Je ne saisie pas bien ce paragraphe :
Vous avez pu voir que l'invocation des méthodes se faisait en allant jusqu'au dernier élément pour remonter ensuite la pile d'invocations. Pour inverser ce fonctionnement, il vous suffit d'inverser les appels dans la méthode preparer() : affecter d'abord le nom de la couche et ensuite le nom du décorateur.
S'agit-il de faire ça dans chacune des classes "Couche" ?
En transformant :
public class CoucheChocolat extends Couche{
public CoucheChocolat(Patisserie p) {
super(p);
this.nom = "\t- Une couche de chocolat.\n";
}
}
en
public class CoucheChocolat extends Couche{
public CoucheChocolat(Patisserie p) {
this.nom = "\t- Une couche de chocolat.\n";
super(p);
}
}
J'avoue que ce n'est pas très clair pour moi . Merci d'avance de votre aide .
je ne comprend pas d'ou provient l'erreur étant donné que j'ai tapé exactement le même code pour la variable 'rep1' que ça fonctionne .. quelqun peut m'éclairer svp?
je sait que mon code n'est pas super et je compte le recommencer à zéro mais je voudrait juste comprendre pourquoi celui ci ne fonctionne pas..
Pour le mouvement atomique, je ne suis pas persuadé mais une instruction atomique est un bloc qui ne peut pas être découpé qui sera exécuté en une fois par un thread. Donc je partirais dans l'idée que cette action ne peut pas être interrompue par un autre thread, mais cela peut être long donc je doute que cela soit si simple, cela demande quelque essai pour m'en assurer.
Pour le decorator, tu peux essayer ce que tu proposes mais tu violes une règles primordiale de Java (donc cela ne compilera pas). La première instruction d'un constructeur ne peut être qu'un appel aux constructeur de la classe mère ou de la classe même (super ou this). Si cela n'est pas présent, le compilateur va ajouter un appel au constructeur par défaut de la classe mère "super()". Dans ton cas tu essaye d'instancier une variable suivi d'un appel au super constructeur, donc super ne sera pas la première instruction du constructeur.
Il est dit d'inverser dans la méthode préparer. (affecter d'abord le nom de la couche et ensuite le nom du décorateur.)
public String preparer() {
String str = pat.preparer();
return nom + str; //avant : return str + nom;
}
En voyant l'exception, tu as une exception qui dit que ta chaine fait moins de 1 caractère (index 0 est hors des bornes). Donc je pense que tu n'as rien tapé dans ta console ce qui donne une chaine vide rep2 = "". Tu peux facilement éviter cela en vérifiant la longeur de ta chaine
Autant pour moi, j'oublie souvent ce concept pour le scanner.
Utiliser nextInt, nextDouble, ... récupère la valeur numérique que tu tapes mais laisse les caractères 10 et 13 (courament vu comme '\n' pour valider le nombre via enter) donc quand tu appelle ensuite nextLine(), le scanner voit ce caractère et le récupère.
Lorsque tu utilise un nextLine après un nextInt, il faut d'abord vider la ligne, avec nextLine() donc tu appelles une première fois nextLine() sans récupérer la valeur (avant la boucle dans ton cas)
- Edité par AxelHuberty 8 février 2016 à 13:42:04
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
J'ai un gros problèmes avec l'écriture la lecture de mes voitures pour le tp2 Garage.
mon constructeur Garage est le suivant
public Garage(){
//on a just une liste de vehicule vide.
this.listeVoiture=new ArrayList<Vehicule>();
//On Declare nos objets inputStream en dehor de la boucle try
ObjectInputStream objInput;
try{
//On récupere notre precedent garage!
objInput=new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(
new File("Garage.txt"))));
System.out.println("Ici on devrait lire le fichier");
try{
Vehicule V=null;
do{
//V est la voiture contenu dans notre ficher garage
V=(Vehicule)objInput.readObject();
// SI V est non null on le rajoute a notre liste de voiture
if(V!=null){
this.listeVoiture.add(V);
}
}while(V!=null);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally{
objInput.close();
}
}
catch(FileNotFoundException e){
System.out.println("Aucune Voiture sauvegardée!");
}
catch(IOException e){
e.printStackTrace();
}
}
Et la methode pour ajouter des voitre est la suivante
public void addVoiture(Vehicule uneVoiture){
this.listeVoiture.add(uneVoiture);
///maintenant on commence a ecrire la voiture dans un ficher
File fichier=new File("Garage.txt");
//on regarde si le fichier existe. s'il existe pas on le crée.
if(!fichier.exists()){
try{
fichier.createNewFile();
}
catch(IOException e){
e.printStackTrace();
}
//on declare note objOut en dehor de la boucle try
ObjectOutputStream objOut;
try{
//on suit l'exemple de cour
objOut=new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(fichier,true)));// Ici on met true pour pouvoir ecrire a la fin du fichier.
// on ecrit le vehicule dans le fichier.
objOut.writeObject(uneVoiture);
// on ferme le fichier.
objOut.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
j'ai des probleme pour la lecture et l'ecriture de mon fichier... un l'écriture ne se fait pas a la fin comme je le voudrais (sur ce forum j'ai trouvai qu'il fallait mettre un boolean true au FileOutputStream.
second j'ai les message d'erreurs suivant quand je compile et j'ai du mal a les comprendre... et donc comme les éviter.
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2605)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1318)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at Garage.<init>(Garage.java:35)
at Main.main(Main.java:17)
***************************
* Garage OpenClassrooms *
***************************
+ Voiture RENO : Laguna Moteur ESSENCE 150 Chevaux (10256.0 €) [GPS (113.5€), Siege Chauffant (562.9€), Vitre Electrique (212.35€)] pour une valeur total de 11144.75
Pour te rediriger très facilement, lorsque l'on vu écrire des instances dans un fichier, il est bon de se rappeler que l'on ne peut pas écrire plusieurs instances dans un même fichier, donc si tu boucles pour écrire chaque véhicule, tu vas a chaque fois écraser le précédent (pour ne garder que le dernier). L'astuce est d'enregistrer l'instance de Garage, la liste est serializable donc tu pourras récupérer le garage en lecture de la même façon.
Pour ton exception (qui n'est pas une erreur de compilation, une EOFException est généré au runtime), je pense que cela vient de ta boucle while qui tente de lire deux fois, vu que tu n'auras qu'un objet dans le fichier, tu tentes de lire après celui ci et donc tu es hors des bornes du fichier (EOF -> End Of File), mais ce n'est qu'une supposition.
Bon continuation
Axel
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
OK je vois. donc ta proposition est d'écrire toute une liste dans un fichier... et pas écrire un vehicule dans un fichier (a la fin de ce dernier) a chaque fois qu'on en rajoute un. c'est beaucoup plus simple en effet.
mais par curiosité, connais tu réf qui explique comment écrire a la fin d'un fichier?
Après un essais rapide... ma methode addVoiture ne réecrit pas par dessus... Je suis perdu! juste la première voiture est sauvegardée
public void addVoiture(Vehicule uneVoiture){
//on Rajoute la voiture a la liste
this.listeVoiture.add(uneVoiture);
///maintenant on commence a ecrire la voiture dans un fichier
// on crée un fichier.
File fichier=new File("Garage.txt");
//on regarde si le fichier existe. s'il existe pas on le crée.
if(!fichier.exists()){
try{
fichier.createNewFile();
}
catch(IOException e){
e.printStackTrace();
}
//on declare note objOut endehor de la boucle try
ObjectOutputStream objOut;
try{
//on suit l'exemple de cour
objOut=new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(fichier)));// Ici on met true pour pouvoir ecrire a la fin du fichier.
// on ecrit le vehicule dans le fichier.
objOut.writeObject(this.listeVoiture);
// on ferme le fichier.
objOut.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
Pourtant ici je rajoute un objet a ma liste et enfin je la réecrit. Pourtant lors de la lecteur seul le premier élément apparait...
PS JE crois j'ai trouve... après plusieur lecture de mon code... c'est la boucle if qui et mal fermée
Oublie ce que je raconte, je dis une connerie pour l'écriture ... je ne sais plus avec quel classe je confond mais l'écriture d'instances est possible.
EDIT : La doc d'oracle précise que l'on peut. Par contre, le append semble galérer un peu ... le header du fichier semble corrompu lors d'une modification ce qui rend la lecture compliquée.
- Edité par AxelHuberty 9 février 2016 à 11:01:21
Un accès premium d'un mois avec le code AXEL-8RR3 C'est cadeau et c'est illimité !
Est-ce que quelqu'un pourrait m'aider à comprendre l'erreur de mon code parce que je débute en java et à vrai dire j'y comprends pas grand chose :
class Covoiturage{
Personne [] pers;
Voiture [] auto;
Covoiturage (Voiture[]listeauto, Personne[]listepers){
pers=new Personne[listepers.length];
auto=new Voiture[listeauto.length];
for (int i=0; i<listepers.length;i++){
pers[i]=listepers[i];
}
for (int i=0; i<listeauto.length; i++){
auto[i]=listeauto[i];
}
}
//villeDesservie prend en entrée une chaîne de caractère et renvoie vrai si une des voitures appartient à cette ville
boolean villeDesservie (String ville){
for (Voiture elem : auto){
if (elem.ville.equals(ville)){
return true;
}
}
return false;
}
//nbPersonnes prend en argument une ville et renvoie le nombre de personnes habitant la ville
int nbPersonnes (String ville){
int cpt=0;
for (Personne elem : pers){
if (elem.ville.equals(ville)){
++cpt;
}
}
return cpt;
}
//capaciteSuffisante prend en argument une ville et renvoie vrai si il y a assez de place dans les voitures de la ville
//pour toutes les personnes y habitant et faux sinon
boolean capaciteSuffisante(String ville){
int cptPlace=0;
for(Voiture elem : auto){
cptPlace+=elem.capa;
int nbHabitants = nbPersonnes(String ville);
if (cptPlace <= nbHabitants){
return true;
}
}
return false;
}
}
Merci d'avance de l'aide que vous pourrez m'apporter
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.