Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème attribut booléen

Sujet résolu
    27 juillet 2015 à 15:45:58

    Bonjour 

    je suis actuellement une formation à distance pour apprendre le langage Java. j'ai un exercice à faire mais je n'y arrive pas.

    je dois créer la méthode demarrer() dans la classe Car en initialisant l'attribut demarree (un booléen).

    Lorsque j'appelle la méthode demarrer() dans la classe Start j'ai un message d'erreur "the method setDemarrer(boolean) in the type Car is not applicable for the argument"

    Voici ma classe Car

    package com.myschool.game.car;
    
    public class Car {
    
    	String couleur;
    	int puissance;
    	boolean demarree;
    	String proprietaire;
    	
    	
    	public void setInitialize (String proprietaire, String couleur, int puissance) {
    		this.proprietaire = proprietaire;
    		this.couleur = couleur;
    		this.puissance = puissance;
    	}
    	
    	public void setDemarrer (boolean demarree) {
    		this.demarree = demarree;
    		System.out.println("La voiture de " + proprietaire + " démarre !");
    	}
    	
    	public void setVroomvroom () {
    		System.out.println("La voiture de " + proprietaire + " fait Vroom Vroom !");
    	}
    }
    

    et mon fichier 

    package com.myschool.game.car;
    
    public class Start {
    
    	public static void main(String[] args) {
    		
    		Car car1 = new Car();
    		Car car2 = new Car();
    		
    		car1.setInitialize("maxime","rouge",10);
    		car2.setInitialize("Maelis", "bleue", 11);
    		
    		car2.setDemarrer();
    		car2.setVroomvroom();
    		
    	}
    
    }

    je ne comprend pas. Pouvez-vous m'aider ?

    merci 

    cyril 



    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2015 à 15:48:34

      Tu appelles setDemarrer() sans argument dedans, alors que la méthode prend en paramètre un booleen. Du coup le compilateur ne comprend pas!

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2015 à 17:02:09

        merci Triterium mais je met quoi comme argument ?

        true ou autre chose?

        merci 

        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2015 à 17:07:43

          setDemarrer() prend en paramètre un boolean donc quand tu l'appelles il faut que tu lui passes en paramètre true ou false.

          car2.setDemarrer(true);


          du coup après ton attribut demarree de l'instance car2 sera passé en true

          • Partager sur Facebook
          • Partager sur Twitter

          Un peuple prêt à sacrifier un peu de liberté pour plus de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux.

            27 juillet 2015 à 17:09:25

            Ben tu mets ce que tu veux! ta méthode setDemarrer(boolean demaree) prend en paramètre un booleen, et fais un traitement en fonction de ce que tu mets en paramètre. (D'ailleurs le corps de ta fonction a peu de logique).

            Ce que tu fais quand tu écris

            car1.setDemarree(true);

            C'est tout simplement dire à l'attribut demarree de ton objet car1 d'être égal à true (et tu fais un affichage en plus).

            Si tu fais

            car1.setDemarree(false);

            tu dis à l'attribut demarree de ton objet car1 d'être égal à false.

            Cette fonction setDemarrer(boolean demarree) est juste là pour changer l'état d'une variable de ton objet.

            Toi ce que tu voudrais faire en écrivant cette fonction, c'est probablement de dire à la voiture de démarrer, non? Dans ce cas il faut que tu crées une méthode demarrer() qui ne prend pas de paramètre, et qui affiche tout simplement : "La voiture démarre";

            • Partager sur Facebook
            • Partager sur Twitter
              27 juillet 2015 à 18:30:42

              excusez moi, j'ai oublié de préciser que je dois faire un if sur car2.setDemarree() pour savoir si la voiture est démarrée et ensuite lui faire faire vroom

              comme ceci 

              	if(car2.setDemarrer(true)){
              			car2.setVroomvroom();
              		}
              		
              	}

              mais ce n'est pas bon et pas très logique je pense 

              • Partager sur Facebook
              • Partager sur Twitter
                27 juillet 2015 à 18:52:16

                voilà comment je verrais les choses:

                 public void setDemarrer (boolean demarree) {
                    this.demarree = demarree;
                    if(demarree){
                        System.out.println("La voiture de " + proprietaire + " démarre !");
                        this.setVroomvroom()
                    }
                     
                    public void setVroomvroom () {
                        System.out.println("La voiture de " + proprietaire + " fait Vroom Vroom !");
                    }

                Je vérifie sir le boolean passer en paramètre est 'true', si c'est le cas j'appelle la fonction vroovroom

                -
                Edité par Afengi 27 juillet 2015 à 18:52:46

                • Partager sur Facebook
                • Partager sur Twitter

                Un peuple prêt à sacrifier un peu de liberté pour plus de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux.

                  28 juillet 2015 à 15:08:43

                  ok merci pour votre aide
                  • Partager sur Facebook
                  • Partager sur Twitter

                  problème attribut booléen

                  × 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