Цель этого кода - иметь заблокированный интерфейс для моего основного класса, Coin
, который заставляет пользователя вводить key
для доступа к основному коду. Однако я не знаю, как написать класс драйвера таким образом, чтобы заблокированный объект защищал обычные методы (setKey
, lock
и unlock
), и когда этот объект заблокирован, методы не могут быть вызваны, если они разблокированы, это может вызывается. Я попробовал драйвер, но он не работает.Как написать драйвер для java относительно блокируемого интерфейса?
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") ;
}
}
Lockable Интерфейс
public interface Lockable {
public void setKey (int key);
public void lock (int key);
public void unlock (int key);
public boolean locked();
}
Вы сделали это прямо сейчас. Я не вижу проблемы – ItamarG3
Всякий раз, когда я ввожу число, он по-прежнему запускает мой код, когда ключ ошибочен. Когда я вхожу в правый ключ, он не печатает сообщение. – Philana