如何编写有关可锁定接口的java驱动程序?

问题描述 投票:0回答:3

这段代码的目标是为我的主类

Coin
提供一个可锁定的界面,使用户输入
key
来访问主代码。但是,我不知道如何以可锁定对象保护常规方法(
setKey
lock
unlock
)的方式编写驱动程序类,并且当该对象被锁定时,无法调用这些方法如果它被解锁,则可以调用它。我尝试过驱动程序,但它不起作用。

package coins;

import java.util.Scanner;

public class Coins {

  public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int guess;
    System.out.println("Enter key: ");
    guess = scan.nextInt();
    Coin key = new Coin();
    System.out.println(key);

    final int flips = 1000;
    int heads = 0, tails=0;

    Coin myCoin = new Coin ();

    for (int  count =1; count <= flips; count++) {
      myCoin.flip();

      if (myCoin.isHeads())
        heads++;
      else
        tails++;
    }
    System.out.println ("The number flips: " + flips);
    System.out.println ("The number of heads: " + heads);
    System.out.println ("The number of tails: " + tails);
  }
}

币类

package coins;


class Coin implements Lockable {
  private final int HEADS = 0;
  private final int TAILS = 1;
  private boolean locked;
  private int key;
  private int face;

  public Coin () {
    flip();
    locked = false;
    key = 123;
  }

  public void flip() {
    face = (int) (Math.random()*2);
  }

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

  public String toString() {
    String faceName;
    if (face == HEADS)
      faceName = "Heads";
    else
      faceName = "Tails";
      return faceName;
  }

  public boolean locked(){
    return locked;
  }
  public void setKey(int key){
    this.key = key;
  }
  public void unlock(int key){
    if(this.key == key){
      locked = false ;
    }
  }
  public void lock(int key){
    if(this.key == key){
      locked = true;
    }
  }
  public void messageReturn(){
    if(locked == false)
      System.out.println("unlocked") ;
    }
  }

可锁定界面

public interface Lockable {
  public void setKey (int key);
  public void lock (int key);
  public void unlock (int key);
  public boolean locked();
}
java interface driver
3个回答
0
投票

Itamar Green 所说的是真的。然而,对我来说,您描述的真正问题似乎是在您的

Coins
类中,而不是
Coin
类中。您实际上并没有使用用户输入的
guess
键执行任何操作。您需要使用该键在
setKey()
上调用
Coin
。然后,您的
Coin
将根据您的代码和 Itamar 的答案调用或不调用方法,首先检查它是否处于锁定状态。


0
投票

首先,你应该通过以下方式检查猜测是否正确:(in

main

key.unlock(guess);//and you might want to set the default of locked to true, and remove the flip() in the constructor

需要在每个方法中添加一个检查:

public void flip()
{
    if(!locked)
        face = (int) (Math.random()*2);
}

与其他方法类似。


-1
投票

我要把所有这些代码放在哪里,有人可以帮我把它们加在一起吗,我不知道把这些代码放在哪里。

© www.soinside.com 2019 - 2024. All rights reserved.