2017-09-27 79 views
1

我正在为学校编写一个项目计划。该项目要求我为宠物医院创建一个宠物记录。我应该创建一个宠物主人(最多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); 
    } 
} 
+1

从控制台,没有第三部分库,这是不可能的 – MadProgrammer

+0

@MadProgrammer什么? – Jorgan

+0

基本上,你所要求的是不能实现的,而不是诉诸像游标这样的第三方库。 Java没有提供对命令行输入/输出的大量支持 – MadProgrammer

回答

0

由于Java仅使用控制台,有检测单个按键没有原生的办法...任何输入必须用“输入”实际上被程序采取结束。

因此,模拟检测输入按键,你可以这样做:

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

因为我们知道,一条线总是意味着该输入键被按下,如果字符串是空的,这意味着只有输入键保留。

对于ESC键,如果必须使用第三方库,否则,您可能会让用户实际将“ESC”或其他您定义的关键字写入为输入。

+0

我之前想到过。我可能会使用它,因为我不想处理必须使用第三方类。在按键时很难在互联网上找到这些信息。 – Jorgan