1

我必须制作一个使用两个名为 coin 的文件的程序。一个文件命名为 coin,另一个命名为 coin tester。书中的指示让我感到困惑,但我仍然尝试完成任务。

以下是给出的指示:

创建一个包含变量 faceUp 的 Coin 类,该变量存储一个 0 表示正面朝上或 1 表示反面朝上,一个名为 showFace() 的访问器方法,如果硬币正面朝上则返回 0,如果硬币反面朝上则返回 1,和一个名为 flipCoin() 的修饰符方法,它为变量faceUp 分配一个介于 0 和 1 之间的随机整数(包括 0 和 1)。

使用以下客户端代码测试该类:

public class CoinTester{
    public static void main(String[] args) {
        Coin nickel = new Coin();
        if (nickel.flipCoin() == 0) {
            System.out.println("Heads up!");
        } else {
            System.out.println("Tails up!");
        }
    }
}

这是我的名为 coin 的文件的代码:

public class Coin {
    private int faceUp;

    public Coin() {
        faceUp = (int)(Math.random() * 2);
    }

    public int showCoin() {
        return faceUp;
    }

    public void flipCoin() {
        faceUp = (int)(Math.random() * 2);
    }
}

我确定我做错了,因为我很困惑并且程序有语法错误。我觉得我给出的指示是不可能的。CoinTester 期待返回方法,但由于指示,我不允许这样做。

4

2 回答 2

2

您正在将结果与flipCoin整数进行比较。

但是您将flipCoin 定义为void(不返回)。

其中之一必须改变

作为旁注:

没有规定不允许修饰符方法返回值。虽然它们通常不这样做,但它们有时会返回一个值,以使程序员免于编写额外的行。

于 2019-01-31T23:16:46.560 回答
1

如果一个方法提供信息,它就会返回一些东西。FlipCoin 不应该提供信息,但 showCoin 是。事实上,你想在 if 语句中使用它来查看硬币的状态。此外,您需要在查看硬币之前先翻转硬币。此代码应该可以工作:

public class CoinTester{
    public static void main(String[] args) {
        Coin nickel = new Coin();
        nickel.flipCoin();
        if (nickel.showCoin() == 0) {
            System.out.println("Heads up!");
        } else {
            System.out.println("Tails up!");
        }
    }
}
于 2019-01-31T23:20:26.710 回答