Программа Coin Flip Java - PullRequest
       6

Программа Coin Flip Java

1 голос
/ 02 мая 2020

Вот код Java из книги Льюиса / Лофтуса. Мне трудно понять функцию двух методов и как они вызываются. Надеюсь, вы сможете уточнить это для меня. Я новичок в программировании и все еще в стадии обучения. Ниже приведен код из книги.

Мое изучение состоит в том, что объект myCoin создается при создании новой операции вызова Coin (). Вызов конструктора Coin () вызывает метод flip (). Который затем рассчитать лицо. Я думаю, код myCoin.flip также делает то же самое, что описано выше. Является ли myCoin.flip избыточным кодом здесь.

System.out.println (myCoin) печатающая головка или хвост. Как это возможно? Потому что myCoin - это переменная объекта, которая содержит информацию о голове / хвосте. Это также связано с другим методом. Как печатается только лицо.

Как работает код isHead и toString. В основной программе метод toString не вызывается и выдается Tail. Какова функция логического метода isHead (). Что он делает.

import java.util.Random;

class Coin
{
   private final int HEADS = 0;
   private final int TAILS = 1;

   private int face;


       public Coin ()
   {
      flip();
   }

   //-----------------------------------------------------------------
   //  Flips the coin by randomly choosing a face value.
    //-----------------------------------------------------------------
   public void flip ()
   {
      face = (int) (Math.random() * 2);
   }

   //-----------------------------------------------------------------
   //  Returns true if the current face of the coin is heads.
   //-----------------------------------------------------------------
   public boolean isHeads ()
   {
     return (face == HEADS);
   }

    //-----------------------------------------------------------------
   //  Returns the current face of the coin as a string.
   //-----------------------------------------------------------------
   public String toString()
   {
      String faceName;

      if (face == HEADS)
     faceName = "Heads";
  else
     faceName = "Tails";

  return faceName;
   }
   }



   public class CoinFlip





   {
      //-----------------------------------------------------------------
    // Creates a Coin object, flips it, and prints the results.
    //-----------------------------------------------------------------
     public static void main(String[] args)
   {
    Coin myCoin = new Coin();
     myCoin.flip();
     System.out.println(myCoin);
   if (myCoin.isHeads())
    System.out.println("You win.");
    else
    System.out.println("Better luck next time.");

      }
    }

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Переменная "face" является переменной экземпляра для вашего объекта. Каждый из ваших объектов Coin будет иметь «лицо». IsHeads () проверяет значение "face" и сравнивает его с HEADS. «Лицо» было присвоено либо 0 или 1, когда он был создан. Если метод возвращает true, «face» сохраняет значение «1». ToString () создает строковую переменную "faceName", а затем проверяет значение вашей "face" переменной вашей монеты. Если это «1», для faceName будет назначено слово «Heads» и наоборот. Метод вернет строку.

Попробуйте сделать это после создания объекта для печати. Пример:

Coin myCoin = new Coin();
System.out.println(myCoint.toString());

Надеюсь, это поможет!

1 голос
/ 02 мая 2020
System.out.println(myCoin)

На самом деле

System.out.println(myCoin.toString())

Поскольку ваш toString () выглядит следующим образом:

    public String toString()
   {
      String faceName;

      if (face == HEADS)
     faceName = "Heads";
  else
     faceName = "Tails";

  return faceName;
   }

Как это работает?

Возвращает строку «Головы» или «Хвосты» в зависимости от того, лицо == HEADS или лицо! = HEADS

Что делает isHead ()?

Давайте посмотрим на ваш код

    public boolean isHeads ()
   {
     return (face == HEADS);
   }

Так что же это значит

это лицо == ГОЛОВЫ?

Если да, вернуть логическое значение true // face == HEADS

В противном случае вернуть false // face! = HEADS

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