我正在为学校的项目编写一个程序。该项目要求我为宠物医院创建宠物记录。我应该创建一个宠物主人(最多30个所有者)的名单,包括他们的名字,姓氏,电子邮件和电话,以及每个所有者的阵列宠物(每个所有者的宠物最多为5)。但是,用户可以创建少于30个所有者的列表。我遇到的问题是我想创建代码,用户可以按下转义键来停止外部循环,当他们不需要添加任何所有者时,它会询问他们的所有者信息。此外,它说,“System.out.println(”按Enter键添加另一个所有者或Esc完成列表。“);”它在另一个循环中,所以如果用户点击了一个不正确的键,它将循环询问他们是否要停止添加他的列表(直到他们点击esc或输入)。 (注意:下面的代码不是我的整个程序,我只需要一个特定部分的帮助。我将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);
}
}
答案 0 :(得分:0)
由于Java仅使用控制台,因此没有本地方法来检测单个按键...任何输入必须以&#34;输入&#34;实际上是由该计划采取。
因此,要模拟检测输入按键,您可以执行以下操作:
if (scan.nextLine().isEmpty())
// do stuff
因为我们知道一行总是意味着按下了回车键,如果字符串为空,则表示只保留回车键。
对于ESC键,如果必须使用第三方库,则应使用第三方库,否则,您可以让用户实际写入&#34; ESC&#34;或者您定义的其他一些关键词作为输入。