2010-05-07 3 views
0

Je suis débutant à Java et a essayé ce casse-tête de code de la tête du premier livre java que je résolu comme suit et a obtenu la sortie correcte: DNoob question sur une déclaration dans un programme Java

class DrumKit 
    { 
     boolean topHat=true; 
     boolean snare=true; 
     void playSnare() 
      { 
       System.out.println("bang bang ba-bang"); 
      } 
     void playTopHat() 
      { 
       System.out.println("ding ding da-ding"); 
      } 


    } 

public class DrumKitTestDriver 
    { 

     public static void main(String[] args) 

      { 
       DrumKit d =new DrumKit(); 

       if(d.snare==true) 

        { 
         d.playSnare(); 
        } 

           //d.snare=false; 

        d.playTopHat(); 

      } 

    } 

sortie est ::

Bang Bang ding ba-bang ding-ding da

maintenant, le problème est que dans ce casse-tête de code un extrait de code est laissé que je ne pas de include..it comme suit

d.snare = false;

Même si je ne l'ai pas écrit, j'ai obtenu la sortie comme le livre. Je me demande pourquoi avons-nous besoin de définir sa valeur comme fausse, même si nous savons que le code fonctionnera sans lui aussi? Je me demande ce que le codeur avait à l'esprit .. Je veux dire ce qui pourrait être l'utilisation future possible et le motif derrière cela?

Je suis désolé si c'est une question stupide. Je veux juste savoir pourquoi ou pourquoi ne pas inclure cette déclaration particulière? Ce n'est pas comme s'il y avait une boucle ou quelque chose dont nous devons sortir. Pourquoi cette déclaration est-elle là?

+1

où est-ce que la déclaration est passée dans le code original – Midhat

+1

@happysoul, si vous souhaitez une réponse utile, veuillez replacer la ligne en question à sa place, mais commentez. –

Répondre

1

Il est probablement juste là pour montrer comment changer une variable de membre public.

+0

oui .. c'est ce qu'il me semble – Serenity

0

où est

d.snare=false; 

Si elle est avant si la condition qu'elle changerait alors la sortie en affectant l'état de la variable à l'intérieur de la classe d, il serait maintenant simplement de poste. La condition if serait ignorée, mais si elle est après la condition if, elle n'aura aucun effet puisque sa valeur n'est évaluée que dans la condition if.

écrit dans Main ou à l'intérieur de la classe;

À partir du code que vous avez affiché, la sortie est correcte.

+0

il est à l'intérieur principal – Serenity

+2

Ceci n'est pas une réponse. Veuillez utiliser la section des commentaires sous la question pour les demandes de clarification. –

+0

je l'ai édité. Merci – WeShallOvercome

-1

Vous devriez laisser DrumKit gérer la logique et laisser la classe principale faire les réglages sur DrumKit. Quelque chose comme ceci:

class DrumKit 
{ 
    boolean topHat=true; 
    boolean snare=true; 
    void playSnare() { 
      System.out.println("bang bang ba-bang"); 
    } 
    void playTopHat() { 
      System.out.println("ding ding da-ding"); 
    } 

    void play(){ 
      if (snare){ 
        playSnare(); 
      } 
      if (topHat){ 
        playTopHat(); 
      } 
    } 
} 

public class DrumKitTestDriver { 

    public static void main(String[] args) { 
      DrumKit d =new DrumKit(); 
      d.snare = false; 
      d.play(); 
     } 
} 
0

Je suis tout à fait sûr il n'y a pas de raison de changer une variable/état/whatever si elle est définitif non utilisé après!

Cordialement