Вопрос Noob об утверждении в программе Java - PullRequest
0 голосов
/ 07 мая 2010

Я новичок в java и пробовал эту кодовую головоломку из первой главы java книги, которую я решил следующим образом и получил правильный вывод: D

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();

            }

    }

Вывод ::

bang bang ba-bang ding ding da-ding

Теперь проблема заключается в том, что в этой загадке кода остался один фрагмент кода, который я не включил ... он выглядит следующим образом

d.snare = false;

Несмотря на то, что я не написал его, я получил вывод, как в книге.Мне интересно, зачем нам устанавливать значение false, даже если мы знаем, что код будет работать и без него? ??

Мне интересно, что имел в виду кодер .. Я имею в виду, чтоМожет ли быть будущее использование и мотив для этого?

Извините, если это глупый вопрос.Я просто хочу знать, почему или почему бы не включить это конкретное утверждение?Это не так, что есть петля или что-то, из чего мы должны выйти.Почему это утверждение там?

Ответы [ 4 ]

1 голос
/ 07 мая 2010

Вероятно, это просто демонстрация того, как изменить открытую переменную-член.

0 голосов
/ 07 мая 2010

Вы должны позволить DrumKit обрабатывать логику и позволить основному классу просто выполнить настройки в DrumKit. Примерно так:

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 голосов
/ 07 мая 2010

Я совершенно уверен, что нет НИКАКОЙ причины изменять переменную / состояние / что угодно, если это окончательно , впоследствии не использованное!

Привет

0 голосов
/ 07 мая 2010

где

d.snare=false;

Если оно находится перед условием if, то оно изменит вывод, воздействуя на состояние переменной внутри класса d, теперь оно просто отправит сообщение.

Дин Дин Дад Дин Условие if будет обойдено, однако, если оно находится после условия if, оно не будет иметь никакого эффекта, поскольку его значение оценивается только в условии if.

написано на основном или внутри класса;

Из кода, который вы разместили, вывод верен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...