JAVA尝试调整用户解锁程序锁和完成程序的尝试

JAVA尝试调整用户解锁程序锁和完成程序的尝试,java,Java,到目前为止,我的程序只给我两次尝试,然后当我想让它说报警时,它给我一个假输出。编辑代码,如果你喜欢和评论我应该做什么。我还有一些调试,如果我能得到一些帮助的话,那将是非常好的,这样我就可以有一个功能齐全的程序您现在不会有两次尝试。您当前看到的是这组代码的输出: import java.io.*; public class GentCPT3 { public static void main (String[] args) throws IOException { Buffered

到目前为止,我的程序只给我两次尝试,然后当我想让它说报警时,它给我一个假输出。编辑代码,如果你喜欢和评论我应该做什么。我还有一些调试,如果我能得到一些帮助的话,那将是非常好的,这样我就可以有一个功能齐全的程序

您现在不会有两次尝试。您当前看到的是这组代码的输出:

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.close();
      lock1.close();

    }
  }
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) 
    {
      System.out.println("Opened");
      isOpen = true;
    } 
    else if(!isOpen) 
    {
      numAttempts++;
    } 
    if(numAttempts == 3) 
    {
      System.out.println("ALARM");//prints alarm when the combo is incorrect 3 times
    } 
  } 
}
每个锁当前只有一次打开尝试。如果添加更多打开的尝试,如:

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.open(111); // opens lock1
lock2.open(222); // opens lock2
lock1.open(111); // opens lock1
lock2.open(222); // opens lock2
lock1.open(111); // opens lock1
lock2.open(222); // opens lock2
锁(int键)
{
isOpen=true;//
这将导致以下输出:

  • 真的
  • 打开
  • 打开

您需要学习如何使用调试器,并一次一行地遍历代码,以查看实际发生的情况。你可以在google或youtube上找到使用Eclipse或Intellij或任何你正在使用的IDE进行此操作的指南。如果你只尝试了2次,为什么你希望它打印“报警”呢?我需要的是,对于每个单独的锁,如果同一个锁在一行上收到3次失败的尝试。它打印报警信息。我需要的是,对于每个单独的锁,如果同一个锁在一行上接收到3次失败的尝试。它会打印报警信息。我的答案解决了你的问题。正如我所说,您现在并没有试图在代码中打开三次锁。
Lock(int key) 
{
    isOpen = true; // < true as default (instead of false)
    this.key = key;
}