Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Apprenez à programmer en Java

    6 août 2015 à 19:00:49

    Hum c'est mon tour de poser une question (TP garage)

    J'arrive à afficher correctement le texte qu'il faut, mais manifestement le problème se situe  dans la partie Input/Output, précisément Output d'après ma session debugging. A la lecture, il y a des messages "Source Unknown" au call de ma méthode Vehicule.toString(). Je ne comprends ce qu'il se passe :/.

    Merci de votre aide chers Zeros! 

    j'obtiens le log d'erreurs suivant :

    Exception in thread "main" java.lang.NullPointerException
    	at com.sdz.garage.Vehicule.toString(Vehicule.java:38)
    	at com.sdz.garage.Garage.toString(Garage.java:60)
    	at java.lang.String.valueOf(Unknown Source)
    	at java.io.PrintStream.println(Unknown Source)
    	at com.sdz.garage.Test.main(Test.java:13)

    Voici ma classe Garage :

    package com.sdz.garage;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class Garage {
    	private List<Vehicule> voitures;
    
    	// Constructeur
    	public Garage (){
    		voitures = new ArrayList<Vehicule>();
    	}
    	
    	// Ajouter une voiture au fichier garage
    	public void addVoiture(Vehicule voit) {
    		voitures.add(voit);
    		
    		//Nous déclarons nos objets en dehors du bloc try/catch
    	    ObjectOutputStream oos;
    	    
    	    try {
                oos = new ObjectOutputStream(
                		new BufferedOutputStream(
                				new FileOutputStream(
                						new File("garage.txt"))));
                for(Vehicule vh : voitures) {
                    oos.writeObject(vh);
                }
                oos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    	
        // Imprime le contenu du garage
        public String toString(){
        	
        	//Nous déclarons nos objets en dehors du bloc try/catch
        	ObjectInputStream ois;
            String str = "***************************\n*  Garage OpenClassrooms  *\n***************************\n";
            
            try{
                ois = new ObjectInputStream(
                		new BufferedInputStream(
                				new FileInputStream(
                						new File("garage.txt"))));
                try{
                	System.out.println(((Vehicule)ois.readObject()).toString());
                	System.out.println(((Vehicule)ois.readObject()).toString());
                	System.out.println(((Vehicule)ois.readObject()).toString());
                	System.out.println(((Vehicule)ois.readObject()).toString());
                	System.out.println(((Vehicule)ois.readObject()).toString());
                    System.out.println(((Vehicule)ois.readObject()).toString());
                }catch(ClassNotFoundException e){
                    e.printStackTrace();
                }
                ois.close();
            }
            catch(FileNotFoundException e){
                try {
                    throw new Exception("Aucune voiture sauvegardée! ");
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            } catch(IOException e){
                e.printStackTrace();
            }
    
            return str;
        }
    
    
    
    
    
    }
    

    ma classe Vehicule 

    package com.sdz.garage;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.sdz.option.Option;
    
    public abstract class Vehicule implements Serializable {
    	
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = -3513552697329449267L;
    	private static double prix;
    	private String nom;
    	protected transient List<Option> options= new ArrayList<Option>();;
    	private transient Marque nomMarque;
    	protected transient Moteur moteur;
    	
    	//Constructeur par défaut
    	public Vehicule (){
    	}
    	
    	// Constructeur avec paramètres
    	public Vehicule(String nom, double prix, List<Option> options, Marque nomMarque)
        {
        this.nom = nom;
        this.prix = prix;
        this.options = options;
        this.nomMarque = nomMarque;
         
        }
    	
    	
    	//Méthode d'affichage
    	public String toString()
    	{
    		String str = "Voiture " + getMarque() +" : "+ getNom() + " "  + moteur.toString();
    		if (options.size() > 0)
    		{
    			for(Option e : options)
    			{
    				str += "avec les options [ " + e.getTypeOption() + "(" + e.getPrix() + "€) ]";
    			}
    		} else 
    		{
    			str += "sans options";
    		}
    		
    		str += " d'une valeur totale de " + getPrix() + "€";
    		return str;
    	}
    
    	
    	public Marque getMarque()
    	{
    		return nomMarque;
    	}
    
    	public List<Option> getOptions()
    	{
    		return options;
    	}
    
    	public double getPrix()
    	{
    		double res = moteur.getPrix();
    		for(Option e : options)
    		{
    			res += e.getPrix();
    		}
    		return res;
    	}
    
    	public void addOption(Option opt){
    		options.add(opt);
    	}
    	
    	public void setMoteur (Moteur m)
        {
             moteur=m;
        }
    	
    	public String getNom(){
    		return this.nom;
    	}
    	
    }
    

    et ma classe Test (identique à 90% à celle fournie)

    package com.sdz.garage;
    
    
    import com.sdz.option.BarreDeToit;
    import com.sdz.option.Climatisation;
    import com.sdz.option.GPS;
    import com.sdz.option.SiegeChauffant;
    import com.sdz.option.VitreElectrique;
    
    public class Test {
        public static void main(String[] args) {
       	 Garage garage = new Garage();   
       	 System.out.println(garage);
       	 
       	 Vehicule lag1 = new Lagouna();
       	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));
       	 lag1.addOption(new GPS());
       	 lag1.addOption(new SiegeChauffant());
       	 lag1.addOption(new VitreElectrique());
       	 System.out.println(lag1.toString());
       	 garage.addVoiture(lag1);
       		 
       	 Vehicule A300B_2 = new A300B();
       	 A300B_2.setMoteur(new MoteurElectrique("1500 W", 1234d));
       	 A300B_2.addOption(new Climatisation());
       	 A300B_2.addOption(new BarreDeToit());
       	 A300B_2.addOption(new SiegeChauffant());
       	 garage.addVoiture(A300B_2);
       	 System.out.println(A300B_2.toString());
       	 
       	 Vehicule d4_1 = new D4();
       	 d4_1.setMoteur(new MoteurDiesel("200 Hdi", 25684.80d));
       	 d4_1.addOption(new BarreDeToit());
       	 d4_1.addOption(new Climatisation());
       	 d4_1.addOption(new GPS());
       	 garage.addVoiture(d4_1);
       	 System.out.println(d4_1.toString());
       	 
       	 Vehicule lag2 = new Lagouna();
       	 lag2.setMoteur(new MoteurDiesel("500 Hdi", 45698d));
       	 garage.addVoiture(lag2);
       	 System.out.println(lag2.toString());
       	 
       	 Vehicule A300B_1 = new A300B();
       	 A300B_1.setMoteur(new MoteurHybride("ESSENCE/Electrique", 12345.95d));
       	 A300B_1.addOption(new VitreElectrique());
       	 A300B_1.addOption(new BarreDeToit());
       	 garage.addVoiture(A300B_1);
       	 System.out.println(A300B_1.toString());
       	 
       	 Vehicule d4_2 = new D4();
       	 d4_2.setMoteur(new MoteurElectrique("100 KW", 1224d));
       	 d4_2.addOption(new SiegeChauffant());
       	 d4_2.addOption(new BarreDeToit());
       	 d4_2.addOption(new Climatisation());
       	 d4_2.addOption(new GPS());
       	 d4_2.addOption(new VitreElectrique());
       	 garage.addVoiture(d4_2);
       	 System.out.println(d4_2.toString());
       	 
        }
    
    
    }
    




    -
    Edité par Dcaszero 10 août 2015 à 14:40:19

    • Partager sur Facebook
    • Partager sur Twitter
      6 août 2015 à 19:15:43

      Bonjour, les exemples de programmes dans le cour sont en noir et blanc.

      C'est moi ou c'est normal ? (J'ai vraiment du mal, habitué avec les IDE)

      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2015 à 10:14:24

        Moi ce qui me choque c'est surtout que, vu la définition de sa classe Vehicule, on peut lire : Ma classe Vehicule EST UN Moteur et EST AUSSI UNE Option...

        public class Vehicule extends Moteur implements Option{
           //....
        }

        Au lieu de Vehicule A UN Moteur et A UNE(ou N) Option

        public class Vehicule {
           Moteur mot;
           List<Option> listOption;
        }
        • Partager sur Facebook
        • Partager sur Twitter
          7 août 2015 à 12:35:59

          Au temps pour moi Cysboy ^^'.. hum...J'avais eu le même soucis que lui, j'ai pas pensé à regarder si c'était à cause de la structure du code.
          • Partager sur Facebook
          • Partager sur Twitter
            7 août 2015 à 13:57:02

            Merci Dcaszero !

            le problème était justement au niveau du polymorphisme, mais c'est comme si sa ne marche pas avec les moteurs car l'appel du moteur me retourne null partout

            pouvez vous avoir une idée ?

            voici le code de la classe Moteur:

            package com.vehicule.moteur;
            
            import com.garage.vehicule.Vehicule;
            
            public class Moteur {
            	protected TypeMoteur type;
            	protected String cylindre;
            	protected Double prix;
            	
            	public void Moteur(String cylindre, double prix){
            		
            	}
            	
            	public String toString(){
            		String str= this.cylindre+","+this.type+","+this.prix;
            		return str;
            	}
            	public double getPrix() {
            		return this.getPrix();
            	}
            	
            	
            	public Moteur()
                {
                    super();
                }
            	public Moteur(TypeMoteur type, String cylindre, Double prix) {
            		super();
            		this.type = type;
            		this.cylindre = cylindre;
            		this.prix = prix;
            	}
            	
            	
            
            }
            



            -
            Edité par MS jedi zero 7 août 2015 à 14:08:11

            • Partager sur Facebook
            • Partager sur Twitter
              7 août 2015 à 21:02:46

              Dans le fichier Test, les objets moteurs sont initialisés à l'aide du constructeur :

              lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));


              donc avec les paramètres (String cylindre, Double prix), 

              or le constructeur qui fait le job dans ton code, n'est pas un constructeur, c'est en fait une méthode. En effet, tu lui appliques le type void.

              En principe t'aurais du avoir une erreur de compilation du genre : 

               "Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
              
              	The constructor Moteur(String, double) is undefined"
              public Moteur()
                  {
                      super();
                  }

              Ce constructeur est tout bonnement  faux également ! la commande super() ne récupère rien, vu qu'il n'y a pas de superclass à Moteur..

              Même remarque pour ton dernier constructeur...

              Un conseil relis, le cours sur les constructeurs ^^.

              bon courage!

              -
              Edité par Dcaszero 8 août 2015 à 8:59:31

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                8 août 2015 à 11:56:51

                Bonjour à tous,

                Tout d'abord, je ne sais même pas si j'ai le droit de vous demander quelque chose. J'ai cliqué sur répondre, parce que je n'ai pas trouvé un bouton qui porte l'étiquette demander. Veuillez me pardonner l'usage mal à propos de ce site.

                Maintenant, je m'occupe du travail pratique nommé réalisez un garage. J'ai trouvé plein d'autres questions à ce sujet, mais c'était difficile celle que je veux vous poser. Veuillez m'excuser dans le cas où elle a déjà été répondu.

                 Je ne vous donnerai pas de code à relire, parce que j'ai tout simplement besoin d'une explication au sujet de l'Interface Options et les classes GPS, BarreDeToit, VitreElectrique, Climatisation et SiègeChauffant.

                Options est une Interface, donc les cinq classes ci-dessus doivent tous être abstraites. Or, dans le code Main que vous m'aviez fourni, il me semble qu'on essaie d'instancier GPS avec la ligne :

                lag1.addOption(new GPS());

                Ces choses semblent se contredire.Pour appuyer ce que j'avance, voici les avertissement qui s'affichent en bas de l'écran quand j'essaie de lancer :

                Puis-je vous demander qu'est-ce qui cloche dans mon raisonnement? Y-a-til peut-être une astuce pour définir un « ajouteur » d'options sans qu'une erreur se déclenche lorsqu'on emploie le mot-clé new? Prévenez-moi si vous voulez voir un bout de mon code pour être à même de répondre.

                Merci d'avance !

                ---------------------------

                Mise à jour après la réponse de @Dcaszeros

                Merci d'avoir répondu si rapidement! Si j'ai bien compris je dois opter pour une Interface ou une classe abstraite pour modéliser ces options. Comme je ne sais très peu des interfaces, les classes abstraites m'attirent le plus. Et dans ce cas vous me conseillez de mettre l'en-tête d'un constructeur dans cette classe abstraite, et de mettre ses corps dans ses classes-filles? Voilà ce que je pense quand vous me parlez d'une méthode qui permet d'instancier une classe: Le constructeur est à ma connaissance la seule qui fera l'affaire. Malheureusement, cette façon de couper un constructeur en deux ne semble pas marcher.

                Comme vous avez beaucoup d'autres élèves sur les bras, je vous laisse le temps de les aider. Vous pouvez revenez ici quand bon vous semble, en attendant je lirai le prochain chapitre :)


                -
                Edité par Anonyme 9 août 2015 à 18:23:50

                • Partager sur Facebook
                • Partager sur Twitter
                  8 août 2015 à 17:04:25

                  pour les boutons n'y aurai t'il pas une méthodes comme setLocation(); pour le placer
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 août 2015 à 18:22:44

                    @KoenvanDuin


                    J'ai trouvé intéressante ta question. 

                    En effet pour instancier, la classe ne doit pas être abstraite. L'interface Option associé à une classe permet d'attribuer aux objets qui l'implémentent une relation Is-a , tout comme une classe B qui hérite (extends) d'une classe A.

                    En fait, dans cet exercice t'aurais créé une classe Abstraite Option et créé les 5 autres classes filles et définir (ou implémenter) les méthodes abstraites de Option dans chacune d'elle, pour que celles ci soient instanciables...

                    ou bien

                    Utiliser l'interface Option :

                    c-a-d, créer des classes qui d'objets implémentent l'interface Option, et redéfinir les méthodes abstraites dans celle-ci...

                    La différence entre ces 2 méthodes, de mon niveau... je ne vois pas encore, mais j'aurais tendance à utiliser l'interface ^^, je vois bcp dans les forums , des developpers qui disent d'utiliser le moins possible l'héritage ! J'espère comprendre un jour ! 

                     

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 août 2015 à 18:28:13

                      Bonjour,

                      J'ai un petit soucis pour finir le dernier devoir du MOOC java, tout fonctionne hormis la suppression des lignes dans la base de donnée qui me met une erreur du type:

                      at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)

                      Je vous met les parties de code concernés ...

                      la méthode delete de VehiculeDAO:

                      @Override
                      	public boolean delete(Vehicule object) {
                      		boolean isDone = false;
                      		try {
                      			connect.setAutoCommit(false);
                      			
                      			// On efface chaque ligne d'option qui correspond à l'ID du véhicule:
                      			ResultSet result = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE).executeQuery("SELECT * FROM vehicule_option");
                      			while(result.next()) {
                      				if(result.getInt("id_vehicule")==object.getId()) {
                      					result.deleteRow();
                      					System.out.println("Options effacés !");
                      				}
                      			}
                      			result.close();
                      			
                      			// Ensuite seulement on efface la ligne du véhicule:
                      			result = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery("SELECT id FROM vehicule");
                      			while(result.next()) {
                      				if(result.getInt("id")==object.getId()) {
                      					result.deleteRow();
                      					System.out.println("Ligne avec clé principale supprimée !");
                      				}
                      			}
                      			result.close();
                      			isDone = true;
                      		} catch (SQLException e) {
                      			e.printStackTrace();
                      		}
                      		return isDone;
                      	}

                      La méthode actionPerformed duButtonListener:

                      public void actionPerformed(ActionEvent event) {
                      		id = Integer.parseInt(table.getModel().getValueAt(row, 4).toString());
                      		Vehicule vehicule = new VehiculeDAO(HsqldbConnection.getInstance()).find(id);
                      		if(new VehiculeDAO(HsqldbConnection.getInstance()).delete(vehicule)) {
                      			System.out.println("Véhicule supprimé : " + vehicule.toString());
                      			// Dans ce cas on recharge notre table:
                      			this.table = DAOTableFactory.getTable(HsqldbConnection.getInstance(), DatabaseTable.VEHICULE);
                      			this.table.revalidate();
                      			this.table.repaint();
                      		}
                      		System.out.println("ID : " + id);
                      		/*
                      		
                      		Ici, il vous faut définir comment supprimer un véhicule
                      		et n'oubliez pas de supprimer toutes les options de ceui-ci...
                      		
                      		*/


                      Tout le code d'erreur de la console:

                      Options effacés !
                      Options effacés !
                      Options effacés !
                      Options effacés !
                      Options effacés !
                      java.sql.SQLException: attempt to assign to non-updatable column
                      	at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCUtil.notUpdatableColumn(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCResultSet.checkUpdatable(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCResultSet.performDelete(Unknown Source)
                      	at org.hsqldb.jdbc.JDBCResultSet.deleteRow(Unknown Source)
                      	at fr.ocr.sql.dao.VehiculeDAO.delete(VehiculeDAO.java:71)
                      	at fr.ocr.ihm.listener.ButtonListener.actionPerformed(ButtonListener.java:35)
                      	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
                      	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
                      	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
                      	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
                      	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
                      	at java.awt.Component.processMouseEvent(Unknown Source)
                      	at javax.swing.JComponent.processMouseEvent(Unknown Source)
                      	at java.awt.Component.processEvent(Unknown Source)
                      	at java.awt.Container.processEvent(Unknown Source)
                      	at java.awt.Component.dispatchEventImpl(Unknown Source)
                      	at java.awt.Container.dispatchEventImpl(Unknown Source)
                      	at java.awt.Component.dispatchEvent(Unknown Source)
                      	at javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(Unknown Source)
                      	at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
                      	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
                      	at java.awt.Component.processMouseEvent(Unknown Source)
                      	at javax.swing.JComponent.processMouseEvent(Unknown Source)
                      	at java.awt.Component.processEvent(Unknown Source)
                      	at java.awt.Container.processEvent(Unknown Source)
                      	at java.awt.Component.dispatchEventImpl(Unknown Source)
                      	at java.awt.Container.dispatchEventImpl(Unknown Source)
                      	at java.awt.Component.dispatchEvent(Unknown Source)
                      	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
                      	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
                      	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
                      	at java.awt.Container.dispatchEventImpl(Unknown Source)
                      	at java.awt.Window.dispatchEventImpl(Unknown Source)
                      	at java.awt.Component.dispatchEvent(Unknown Source)
                      	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
                      	at java.awt.EventQueue.access$500(Unknown Source)
                      	at java.awt.EventQueue$3.run(Unknown Source)
                      	at java.awt.EventQueue$3.run(Unknown Source)
                      	at java.security.AccessController.doPrivileged(Native Method)
                      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
                      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
                      	at java.awt.EventQueue$4.run(Unknown Source)
                      	at java.awt.EventQueue$4.run(Unknown Source)
                      	at java.security.AccessController.doPrivileged(Native Method)
                      	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
                      	at java.awt.EventQueue.dispatchEvent(Unknown Source)
                      	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
                      	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
                      	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
                      	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
                      	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
                      	at java.awt.EventDispatchThread.run(Unknown Source)
                      Caused by: org.hsqldb.HsqlException: attempt to assign to non-updatable column
                      	at org.hsqldb.error.Error.error(Unknown Source)
                      	at org.hsqldb.error.Error.error(Unknown Source)
                      	... 53 more
                      ID : 18
                      Action sur le bouton 'Supprimer'
                      Colone de sélection : 6 | Ligne de sélection : 2


                      j'ai laisser les System.out.println() comme indices si ça peut aider.

                      Je n'ai pas trop de notions en SQL, je ne sais pas si l'erreur vient le la ou d'autre part, je vous serait très reconnaissant si vous pouviez m'aider, c'est la dernière ligne droite avant que je rende le devoir !

                      Au passage, un grand merci à l'auteur de ce cour, j'y ai appris énormément !

                      Merci d'avance de votre aide !

                      Dario

                       -----------------------------

                      Résolu !!!!!!

                      ------------------------------

                      -
                      Edité par Darioo2 9 août 2015 à 16:15:57

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 août 2015 à 19:24:54

                        Bonjour quelqu'un aurai t-il une idée de mini-projet a réaliser en java bien sur?

                        Merci d'avance.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 août 2015 à 1:58:19

                          Excellent ce cours de Java .... Comment fait-on pour répondre directement sous une publication sur ce forum ? :p

                          -
                          Edité par ElvenElder 11 août 2015 à 2:08:17

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 août 2015 à 15:39:43

                            Bonjour puis-je ajouter du son sur l'activité créer un garage ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 août 2015 à 15:56:47

                              import java.io.BufferedReader;
                              import java.io.BufferedWriter;
                              import java.io.DataInputStream;
                              import java.io.File;
                              import java.io.FileInputStream;
                              import java.io.FileWriter;
                              import java.io.InputStream;
                              import java.io.InputStreamReader;
                              import java.io.PrintWriter;
                              import java.util.ArrayList;
                              import java.util.Iterator;
                              
                              import org.apache.poi.hssf.usermodel.HSSFCell;
                              import org.apache.poi.hssf.usermodel.HSSFRow;
                              import org.apache.poi.hssf.usermodel.HSSFSheet;
                              import org.apache.poi.hssf.usermodel.HSSFWorkbook;
                              
                              
                              public class ExcelReading {
                                   @SuppressWarnings("rawtypes")
                              	public static  void main(String[] args) {
                              		
                              		//declaration des variables
                              		ArrayList<String> values =new ArrayList<String>();
                              		
                              		String [] s1 = new String [231];
                              		
                              			
                              		//recuperation des données depuis le fichier excel
                              		try{
                              			InputStream input=new FileInputStream("test.xls");
                              			
                              			DataInputStream fs = new DataInputStream(input);
                              			HSSFWorkbook wb=new HSSFWorkbook(fs);
                              			HSSFSheet sheet=wb.getSheetAt(0);
                              			Iterator rows=sheet.rowIterator();
                              		
                              			while(rows.hasNext()){
                              				values.clear();
                              				HSSFRow row =(HSSFRow) rows.next();
                              				Iterator cells =row.cellIterator();
                              				while (cells.hasNext()){
                              					HSSFCell cell =(HSSFCell) cells.next();
                              					values.add(cell.getStringCellValue());
                              					//System.out.println(values);
                              				
                              				String [] st=new String[values.size()];
                              				st=values.toArray(st);
                              				for(int k=0;k<st.length;k++){
                              					//System.out.println(st[k]);
                              				}
                              					for(int i=0;i<st.length;i++){
                              						s1[i]=st[i];
                              						System.out.println(s1[i]);
                              					
                              					}
                              				
                              				}	 }
                              
                              			File fil =new File ("test0.txt");
                              			
                              			
                              			  try {
                              				FileWriter fw = new FileWriter (fil);
                              				BufferedWriter bw = new BufferedWriter (fw);
                              				PrintWriter fichierSortie = new PrintWriter (bw);
                              				for(int j=0;j<s1.length;j++){
                              					fichierSortie.println (s1[j]);  }
                              				fichierSortie.close();
                              				//System.out.println("Le fichier " + fil + " a été créé!"); 
                              			}catch (Exception e){
                              				System.out.println(e.toString());
                              			}		
                              		
                              
                              			
                              			
                              		}catch ( Exception ex ) {
                              			ex.printStackTrace();
                              			}
                              		
                              
                              	
                              }}
                              
                              bonjour je n'obtient que les dernières ligne de la chaine dans le fichier des suggestions s'il vous plait
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 août 2015 à 20:39:11

                                Bonjour je n'ai pas bien compris quel est le résultat que l'on doit obtenir pour l'activité garage?

                                Pouvez-vous me l'expliquer?

                                Merci d'avance.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 août 2015 à 13:12:00

                                  salut KaderHaman !

                                  s'il s'agit du 1er TP garage, tu dois développer un garage en java réalisant les résultat suivant:

                                  -Un fichier texte(garage.txt) pour enregistrer des nouvelles Véhicules a chaque exécution en rechargeant les enregistrement déjà effectué

                                  -Utilisation du Polymorphisme, l'héritage, la généricité, les interface, les exceptions(l'essentiel)

                                  -ensuite tu y ajouteras la pratique des autres bases que tu as appris jusqu'ici 

                                  si ceci peut t'aider, il ne reste plus qu'a te souhaité une bonne chance ! et beaucoup de courage !

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 août 2015 à 15:21:52

                                    Bonjour,

                                    J'en suis au tp conversion celsius farhenheit et j'ai etablit un programme qui ne m'affiche pas d'erreur dans la fenêtre du projet. Ensuite lorsque je le lance j'entre les premieres variable etc, il m'affiche une erreur dans la console:

                                    "Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0

                                    at java.lang.String.charAt(Unknown Source)

                                    at siide1.main(siide1.java:32) "

                                    Voici le programe entier:

                                    import java.util.*;

                                    public class siide1 {

                                    public static void main(String[] args) {

                                    Scanner sc = new Scanner(System.in);

                                    double F, C, f1=1.8, f2=0.55555555555556;

                                    int choix;

                                    char reponse = ' ';

                                    do{//tant que la réponse est O

                                    do{ // tant que le choix n'est pas 1 ou 2

                                    System.out.println("Choissisez le mode de conversion:" );

                                    System.out.println("1 - Convertisseur Celsius - Fahrenheit");

                                    System.out.println("2 - Convertisseur Fahrenheit - Celsius");

                                    choix = sc.nextInt();

                                    }while (choix !=1 && choix !=2);

                                    System.out.println("Température à convertir :");

                                    double temp = sc.nextDouble();

                                    if (choix!=2)

                                    {F = (f1*temp)+32;

                                    System.out.println(temp + "°C correspond à :" + F + "°F");}

                                    else 

                                    {C = (temp-32)*f2;

                                    System.out.println(temp + "°F correspond à :" + C + "°C" );}

                                    do { // tant que la réponse n'est pas O ou N

                                    System.out.println("Souhaitez-vous convertir une autre température ?(O/N)");

                                    reponse = sc.nextLine().charAt(0);

                                    }while(reponse != 'O' && reponse != 'N');

                                    }while (reponse == 'O');

                                    System.out.println("Au revoir...");

                                    }

                                    }

                                    Je cherche mais je ne trouve pas l'erreur pourriez vous m'aider svp?

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 août 2015 à 16:28:53

                                      Wow! Je te jure que personne ne peux lire ça :lol: .Utilise la balise de code ,(bouton </> puis java)! Mais en gros Tu es sorti de ton tableau.

                                      J'ai corrigé pour toi. J'ai ajouté quelque chose à la ligne 55(c'est expliqué pourquoi dans le cours je crois)

                                      import java.util.*;
                                      
                                      public class Test
                                      {
                                      
                                          public static void main(String[] args)
                                          {
                                      
                                              Scanner sc = new Scanner(System.in);
                                      
                                              double F, C, f1 = 1.8, f2 = 0.55555555555556;
                                      
                                              int choix;
                                      
                                              char reponse = ' ';
                                      
                                              do
                                              {//tant que la réponse est O
                                      
                                                  do
                                                  { // tant que le choix n'est pas 1 ou 2
                                      
                                                      System.out.println("Choissisez le mode de conversion:");
                                      
                                                      System.out.println("1 - Convertisseur Celsius - Fahrenheit");
                                      
                                                      System.out.println("2 - Convertisseur Fahrenheit - Celsius");
                                      
                                                      choix = sc.nextInt();
                                      
                                                  } while (choix != 1 && choix != 2);
                                      
                                                  System.out.println("Température à convertir :");
                                      
                                                  double temp = sc.nextDouble();
                                      
                                                  if (choix != 2)
                                      
                                                  {
                                                      F = (f1 * temp) + 32;
                                      
                                                      System.out.println(temp + "°C correspond à :" + F + "°F");
                                                  } else
                                      
                                                  {
                                                      C = (temp - 32) * f2;
                                      
                                                      System.out.println(temp + "°F correspond à :" + C + "°C");
                                                  }
                                      
                                                  do
                                                  { // tant que la réponse n'est pas O ou N
                                      
                                                      System.out.println("Souhaitez-vous convertir une autre température ?(O/N)");
                                                      sc.nextLine();
                                                      reponse = sc.nextLine().charAt(0);
                                      
                                                  } while (reponse != 'O' && reponse != 'N');
                                      
                                              } while (reponse == 'O');
                                      
                                              System.out.println("Au revoir...");
                                      
                                          }
                                      
                                      }
                                      



                                      -
                                      Edité par kulturman 12 août 2015 à 16:30:18

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        12 août 2015 à 16:56:32

                                        Bonjour je fais le TP garage et je n'arrive pas a ecrire dans mon fichier texte garage, voici mon code:

                                        import java.io.BufferedInputStream;

                                        import java.io.BufferedOutputStream;

                                        import java.io.File;

                                        import java.io.FileInputStream;

                                        import java.io.FileNotFoundException;

                                        import java.io.FileOutputStream;

                                        import java.io.IOException;

                                        import java.io.ObjectInputStream;

                                        import java.io.ObjectOutputStream;

                                        import java.util.List;

                                        public class Garage {

                                        ObjectInputStream ois;

                                        ObjectOutputStream oos;

                                        List<Vehicule> voiture;

                                        public String toString(){

                                        return "";

                                        }

                                        public void add(Vehicule voit){

                                        try {

                                        oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File("garage.txt"))));

                                        oos.writeObject(new Vehicule());

                                        oos.close();

                                        ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("garage.txt"))));

                                        System.out.println(((Vehicule)ois.readObject()).toString());

                                        ois.close();

                                        } catch (FileNotFoundException e) {

                                        e.printStackTrace();

                                        } catch (IOException e) {

                                        e.printStackTrace();

                                        } catch (ClassNotFoundException e){

                                        e.printStackTrace();

                                        }

                                        }

                                        }

                                        public class Main {
                                        public static void main(String[] args){
                                        System.out.println("************************");
                                        System.out.println("* Garage OpenClassroom *");
                                        System.out.println("************************");
                                        Garage garage = new Garage();
                                        Vehicule lag1 = new Lagouna();
                                        lag1.setMoteur(new MoteurElectrique("150 chevaux", 5.3));
                                        lag1.addOption(new GPS());
                                        lag1.addOption(new Climatisation());
                                        lag1.addOption(new SiegeChauffant());
                                        garage.add(lag1);
                                        }
                                        }
                                        Merci d'avance
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          12 août 2015 à 17:17:06

                                          est ce que quelqu'un peut m'aider sur mon code

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            13 août 2015 à 3:26:49

                                            Rester des heures à chercher l'erreur et voir au final que c'est un truc tout bête...:colere: D'abord merci à toi kulturman, c'est surement expliquer dans le cours mais je ne le vois pas, pourrais tu m'expliquer pourquoi cela a t-il été nécessaire ici? (ici car dans son tp Cyrille Herby lui ne le met pas) Et qu'est ce que tu entend par je suis sorti de mon tableau?
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              13 août 2015 à 9:51:26

                                              Je cite cysboy :

                                              Si vous avez invoqué une méthode comme nextInt(), nextDouble() et que vous invoquez directement après la méthode nextLine(), celle-ci ne vous invitera pas à saisir une chaîne de caractères : elle videra la ligne commencée par les autres instructions.

                                              Donc nextline ne te renvoyait rien et toi tu essayais de récupérer le 1er caractère(t'es donc hors du tableau). Je ne sais pas si c'est assez clair.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                13 août 2015 à 16:21:49

                                                Mis à part cette histoire de tête de lecture je crois que j'ai compris le reste.

                                                En gros le fait d'avoir utilisé "nextDouble()" ne replace pas la tête de lecture au début de la ligne suivante (???) il faut donc le faire par la méthode "nextLine()" ce que je n'avais pas fait.

                                                Du coup si j'ai bien compris mon erreur, Java n'a donc pas récupérer de chaine de caractère et étant donné que par la commande "charAt(0)" je voulais récupérer le 1er caractère de mon tableau (qui est ladite chaîne de caractère) , la boucle qui attend soit O soit N pour continuer se bloque car elle n'a aucun caractère pour vérifier cette condition, enfin je crois o_O...

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  13 août 2015 à 16:31:48

                                                  Bonjour les zéros, je suis sur le livre apprenez à programmer avec Java, suite à cet exercice ci contre
                                                  , j'ai bien compris pour la recherche des  caractères, ou je bloque c'est au niveau  si je veux chercher des mots ex "jeanluc" , j'ai remplace
                                                  tout les chars 'c' par String "jeanluc" mais à ma grande surprise cela ne fonctionne pas , et je ne comprends 
                                                  pourquoi,?? pouvez-vous m'aider ? merci en tout cas
                                                  package tableau;
                                                  
                                                  import java.util.Scanner;
                                                  
                                                  public class Main {
                                                  
                                                  	
                                                  	
                                                  	public static void main(String[] args) {
                                                  		char tableauChaine[] = {'c'};
                                                  		int i = 0;
                                                  		char entreprise  = ' ' ;
                                                  		char reponse = ' ';
                                                  		
                                                  		Scanner sc  = new Scanner(System.in);
                                                  		do{
                                                  			do{
                                                  				i = 0;
                                                  				System.out.println("rentrez le nom d'une entreprise");
                                                  				 entreprise = sc.next().charAt(0);
                                                  				while(i < tableauChaine.length && entreprise != tableauChaine[0])
                                                  					i++;
                                                  				if(i<tableauChaine.length)
                                                  					System.out.println("l'entreprise" +entreprise+ "se trouve");
                                                  				else
                                                  					System.out.println("l'entrepsie" +entreprise+" ne se tourve pas");
                                                  			}while(i >= tableauChaine.length);
                                                  			do{
                                                  				System.out.println("Voulez-vous reessayer a nouveau");
                                                  				reponse = sc.nextLine().charAt(0);
                                                  			}while(reponse !='N' && reponse !='0');
                                                  		}while (reponse == '0');
                                                  		System.out.println("au revoir");
                                                  			}
                                                  		}
                                                  
                                                  
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    16 août 2015 à 10:48:04

                                                    Bonjour , je suis inscrit au cours "apprenez a programmer" en java .

                                                    je viens de recevoir un e mail . me demandant si j avais bien renvoyé mes exercices.

                                                    mais je ne trouves pas ou je dois les envoyer . et est ce le Tp que je dois envoyer .

                                                    bien a vous Freddodu .

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      16 août 2015 à 11:01:45

                                                      Re ...

                                                      Je viens de comprendre ... au premier chapitre, il n y a que le Quizz a faire ...

                                                      il suffisait  juste que j ai voir un peu plus loin ....

                                                      bien a vous .

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        16 août 2015 à 23:47:45

                                                        Bonjour,

                                                        Je voudrais demander des précisions sur l'énoncé du deuxième travail à soumettre pour le cours "Apprenez à programmer en Java":

                                                        Il est demandé d'ajouter une couche d'abstraction entre les tables et les objets. Or le code fournit contient déjà un niveau d'abstraction (DAOTableFactory), que doivent être les objectifs de la nouvelle couche d'abstraction? Est-ce qu'il s'agit de faire disparaitre les noms de table (DatabaseTable.MARQUE, etc) de l'IHM pour les remplacer par des collections d'objets Java plus typiques?

                                                        Merci d'avance pour votre réponse.

                                                        Vincent.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        VincentTheProgrammer
                                                        Anonyme
                                                          18 août 2015 à 8:36:40

                                                          Bonjour cysboy

                                                          Je suis perplex au niveau de votre livre P66 utiliser et rechercher dans un tableau avec char tableauCaractere[] = {'a',b','c','d', 'e', 'f','g'}; cela fonctionne parfaitement j'ai compris. Mais j'ai essaye de l'utiliser avec  String tableuChaine[] ={"jeanluc", "pierre", "michel"} etc.., j'ai remplace tous les chars par string dans le programme, or je ne comprends pas pourquoi le mot entrer au clavier il ne le retrouve pas ! alors pourquoi ? merci de votre reponse éventuelle.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            18 août 2015 à 17:44:19

                                                            Salut euh dans la partie variables et opérateurs quand je met ça

                                                            double nbre1 = 10, nbre2 = 3;

                                                            int resultat = (int)(nbre1 / nbre2);

                                                            System.out.println("Le résultat est = " + resultat);

                                                            Je reçois ce message d'erreur

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            MOOC Apprenez à programmer en Java

                                                            × 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.
                                                            • Editeur
                                                            • Markdown