java 。 Lock 类型的 isOpen() 方法未定义。还需要一些帮助修复一些代码/调试

标签 java

import java.io.*;
public class GentCPT3
{
  public static void main (String[] args) throws IOException
  {
    BufferedReader objReader = new BufferedReader(new InputStreamReader (System.in)); 

      System.out.println("Enter key");
      int key1 = Integer.parseInt(objReader.readLine()); // set to 111  

      System.out.println("Enter key2");
      int key2 = Integer.parseInt(objReader.readLine()); // set to 222

      Lock lock1 = new Lock (key1);

      Lock lock2 = new Lock (key2);

      System.out.println(lock1.isOpen()); // prints false

      lock1.close();
      lock2.close();
      lock1.open(111); // opens lock1
      lock2.open(222); // opens lock2111
      lock1.open(123); // fails to open
      lock1.open(456); // fails to open
      lock1.open(789); // fails - prints “Alarm”
    }
  }
class Lock //Initializing class
{
  //Initializing variables
  boolean isOpen;
  int key; 
  int numAttempts = 0;

  Lock(int key) 
  {
    isOpen = false; 
    this.key = key;
  } 

  public void close()//for incorrect combo 
  {
    isOpen = false;
  } 
  public void open(int key)//for correct combo
  { 
    if(this.key == key) 
    {
      isOpen = true;
    } 
    else if(this.key != key && !isOpen) 
    {
      numAttempts++;
    } 
    if(numAttempts == 3) 
    {
      System.out.println("ALARM");//prints alarm when the combo is incorrect **enter code here**3 times
    } 
  } 
}

我需要帮助修复标题中提到的错误。还有一些我需要帮助的其他调试事情。如果您认为可以修复代码,请随意编辑代码。我需要帮助将锁上每个组合的尝试次数设置为 3,因为目前它设置为 2,我不知道为什么

最佳答案

问题是,一旦成功打开锁,您就无法关闭它们。将您的调用更改为:-

lock1.close();
lock2.close();
lock1.open(111); // opens lock1
lock2.open(222); // opens lock2111
lock1.close(); // NEW ADDITION
lock2.close(); // NEW ADDITION
lock1.open(123); // fails to open
lock1.open(456); // fails to open
lock1.open(789); // fails - prints “Alarm”

要进一步改进代码,请在 this.key == key 时重置 open() 中的 numAttempts = 0。并删除 this.key != key,因为由于之前的 if 条件,它始终为 true

关于 java 。 Lock 类型的 isOpen() 方法未定义。还需要一些帮助修复一些代码/调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53421830/

相关文章:

java - Google play 的多个 sha1 key

Java-监听器、泛型和继承

java - 如何设置servlet使其支持特殊字符?

java - 该表达式不是有效的条件表达式

Java Swing 按钮

java - 从一维数组中删除行

java - 通过主题实现启动屏幕后,ActionBar 抛出 NullPointerException

java - 按坐标排列正方形

java - 如何在 Java 中将一个字节附加到字符串?

java - 如何通过 vSphere 客户端 API 获取 VMWare 中的适配器类型列表