如何在我的场景中让Java检测按键?
我正在为学校编写一个项目计划。该项目要求我为宠物医院创建一个宠物记录。我应该创建一个宠物主人(最多30个主人)的名单,姓名,电子邮件和电话,并为每个主人提供一个阵列宠物(每个主人宠物最多为5人)。但是,用户可以创建少于30个所有者的列表。我有的问题是我想做的代码,用户可以按下退出键来停止外部while循环,要求他们的所有者信息,当他们不需要添加任何业主。此外,它说,“System.out.println(”按Enter键添加另一个所有者或Esc完成列表。“);”它是在另一个循环中,所以如果用户点击一个不正确的键,它会循环询问他们是否要停止添加列表或不列出(直到他们打开esc或输入)。 (注意:下面的代码不是我的整个程序,我只是需要一个特定部分的帮助,我将if语句留空,因为那是我的按键代码的地方)。如何在我的场景中让Java检测按键?
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仅使用控制台,有检测单个按键没有原生的办法...任何输入必须用“输入”实际上被程序采取结束。
因此,模拟检测输入按键,你可以这样做:
if (scan.nextLine().isEmpty())
// do stuff
因为我们知道,一条线总是意味着该输入键被按下,如果字符串是空的,这意味着只有输入键保留。
对于ESC键,如果必须使用第三方库,否则,您可能会让用户实际将“ESC”或其他您定义的关键字写入为输入。
我之前想到过。我可能会使用它,因为我不想处理必须使用第三方类。在按键时很难在互联网上找到这些信息。 – Jorgan
从控制台,没有第三部分库,这是不可能的 – MadProgrammer
@MadProgrammer什么? – Jorgan
基本上,你所要求的是不能实现的,而不是诉诸像游标这样的第三方库。 Java没有提供对命令行输入/输出的大量支持 – MadProgrammer