投币Java程序

投币Java程序,java,Java,下面是Lewis/Loftus书中的Java代码。我很难理解这两个方法的功能以及如何调用它们。希望你能为我详细说明一下。我是编程新手,仍处于学习阶段。下面是这本书的代码 我的学习是 当新操作调用Coin构造时,将创建myCoin对象。调用Coin构造函数调用flip方法。然后计算面。我猜myCoin.flip代码也与上面描述的相同。此处的myCoin.flip是一个冗余代码 System.out.printlnmycin打印头或打印尾。这怎么可能?因为myCoin是包含头/尾信息的对象变量。它也

下面是Lewis/Loftus书中的Java代码。我很难理解这两个方法的功能以及如何调用它们。希望你能为我详细说明一下。我是编程新手,仍处于学习阶段。下面是这本书的代码

我的学习是 当新操作调用Coin构造时,将创建myCoin对象。调用Coin构造函数调用flip方法。然后计算面。我猜myCoin.flip代码也与上面描述的相同。此处的myCoin.flip是一个冗余代码

System.out.printlnmycin打印头或打印尾。这怎么可能?因为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

面变量是对象的实例变量。您的每个硬币对象都有一个面。isHeads检查面值并将其与头部进行比较。面在创建时被指定为0或1。如果该方法返回true,则face存储值“1”。toString创建一个字符串变量faceName,然后检查硬币的face变量的值。如果是“1”,则会为带有的faceName指定单词Heads,反之亦然。该方法将返回一个字符串

创建要打印的对象后,请尝试此操作。例:

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

我希望这有帮助

面变量是对象的实例变量。您的每个硬币对象都有一个面。isHeads检查面值并将其与头部进行比较。面在创建时被指定为0或1。如果该方法返回true,则face存储值“1”。toString创建一个字符串变量faceName,然后检查硬币的face变量的值。如果是“1”,则会为带有的faceName指定单词Heads,反之亦然。该方法将返回一个字符串

System.out.println(myCoin)
创建要打印的对象后,请尝试此操作。例:

Coin myCoin = new Coin();
System.out.println(myCoin.toString());
我希望这有帮助

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;
   }
这是怎么回事

它根据face==Heads还是face!=返回字符串Heads或Tails头

isHead做什么

让我们看看你的代码

    public boolean isHeads ()
   {
     return (face == HEADS);
   }
这意味着

脸=头吗

如果是,则返回布尔值true//face==HEADS

否则返回false//face!=头

实际上是

System.out.println(myCoin.toString())
因为您的toString如下所示:

    public String toString()
   {
      String faceName;

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

  return faceName;
   }
这是怎么回事

它根据face==Heads还是face!=返回字符串Heads或Tails头

isHead做什么

让我们看看你的代码

    public boolean isHeads ()
   {
     return (face == HEADS);
   }
这意味着

脸=头吗

如果是,则返回布尔值true//face==HEADS


否则返回false//face!=头部

Lewis/Loftus面部注释=int Math.random*2;这不是生成一个随机位的好方法。在实际代码中,更喜欢face=ThreadLocalRandom.current.nextInt2;或face=ThreadLocalRandom.current.nextBoolean?0 : 1;isHead返回翻转的值,如果正面为true,如果反面为false。toString提供与字符串相同的信息。CoinFlip类是多余的,我会把主要方法放在Coin类中;这不是生成一个随机位的好方法。在实际代码中,更喜欢face=ThreadLocalRandom.current.nextInt2;或face=ThreadLocalRandom.current.nextBoolean?0 : 1;isHead返回翻转的值,如果正面为true,如果反面为false。toString提供与字符串相同的信息。CoinFlip类是多余的,我会把主要方法放在Coin类中。比你多得多。我真的被系统搞糊涂了。输出,输入。对于其他情况也是如此,例如System.out.printObject等效于System.out.printObject.toString,其引用为:无论何时尝试打印对象引用,都会调用内部toString方法。如果我们没有在您的类中定义toString方法,那么将调用对象类toString方法,否则将调用我们的已实现/重写的toString方法。我真的被系统搞糊涂了。输出,输入。对于其他情况也是如此,例如System.out.printObject等效于System.out.printObject.toString,其引用为:无论何时尝试打印对象引用,都会调用内部toString方法。如果我们没有在您的类中定义toString方法,那么将调用对象类toString方法,否则将调用我们的已实现/重写的toString方法。