java - 如何让 Java 在我的场景中检测按键?

标签 java arrays list keypress

我正在为学校项目编写程序。该项目要求我为宠物医院创建宠物记录。我应该创建一个宠物主人列表(最多 30 个主人),其中包含他们的名字、姓氏、电子邮件和电话,以及每个主人的宠物数组(每个主人最多 5 只宠物)。但是,用户可以创建少于 30 个所有者的列表。我遇到的问题是我想编写代码,用户可以按转义键来停止外部 while 循环,当他们不需要添加更多所有者时,该循环会要求他们提供所有者信息。此外,它还显示“System.out.println(“按 Enter 键添加另一个所有者或按 Esc 键完成列表。”);”它处于另一个循环中,因此如果用户按了错误的键,它将循环询问他们是否要停止添加到列表中(直到他们按 esc 或 Enter)。 (注意:下面的代码不是我的整个程序,我只需要一个特定部分的帮助。我将 if 语句留空,因为那是我的按键代码所在的位置。)。

public class Runner
{
   public static void main(String[]args)
   {
     while(i <= 30)
     {
      System.out.println(i + ". " + "Enter the owner's first name.");
      String first = scan.nextLine();
      System.out.println(i + ". " + "Enter the owner's last name.");
      String last = scan.nextLine();
      System.out.println(i + ". " + "Enter the owner's email address.");
      String emailAdd = scan.nextLine();
      System.out.println(i + ". " + "Enter the owner's phone number.");
      String phone = scan.nextLine();
      Owner owner = new Owner(first, last, emailAdd, phone);
      int j = 1;
      while(j > 0)
        {
           System.out.println("Press enter to add another owner or Esc to 
           finish list.");
           if ()
           {

           }
           if ()
           {

           }
           j++;
        }


     list.add(owner.toString());

     i+=1;
       }
  System.out.println(list);
    }
}

最佳答案

由于 Java 仅使用控制台,因此没有本地方法来检测单个按键...任何输入都必须以“enter”结尾才能由程序实际获取。

因此,要模拟检测回车按键,您可以执行以下操作:

if (scan.nextLine().isEmpty()) 
    // do stuff

由于我们知道一行总是表示按下了 Enter 键,因此如果 String 为空,则表示只保留了 Enter 键。

对于 ESC 键,如果必须让它像这样工作,您应该使用第 3 方库,否则,您可以让用户实际编写“ESC”或您定义的其他关键字作为输入。

关于java - 如何让 Java 在我的场景中检测按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438087/

相关文章:

python - 在 python 中,如何将数组/列表与数字进行比较

java - 是否有适用于 Java 的高效 2D ArrayList 类?

python - 将新列添加到 Numpy 数组的最佳方法

python - 在 Python 中查找列表中元素的索引

java - 如何从 JSP 加载放在类路径中的属性文件?

java - 如何在SQL中检索一组表数据?

java - 递归循环再次运行,无需在 Java 中调用它

java - 从文件中读取 boolean 变量

javascript - 具有多个数组的链接选择框

c# - 查找两个列表中的差异