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