2017-09-27 3 views
1

私は学校のためのプロジェクトのためのプログラムを書いています。このプロジェクトでは、ペット病院のペットの記録を作成する必要があります。私は自分の姓、名字、電子メール、電話番号、所有者ごとの配列ペット(所有者あたりのペットの最大数は5)のペット所有者(最大30人の所有者)のリストを作成することになっています。ただし、ユーザーは30人未満の所有者のリストを作成できます。私が持っている問題は、ユーザーがエスケープキーを押して外部を止めることができるコードを作成したいと思っていることです。ループをもう一度追加する必要がないときに、所有者情報を要求します。また、 "System.out.println(" Enterを押して別のオーナーを追加するか、Escを押してリストを完成させます) ";別のループに入っているので、ユーザーが間違ったキーを押すと、リストの追加を停止するかどうかを尋ねるループが繰り返されます(EscまたはEnterキーを押すまで)。 (注:以下のコードは私のプログラム全体ではなく、私はちょうど特定の部分の助けが必要でした。私はif文を空白にしていました。私のシナリオでJava検出keypressを作る方法は?

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

コンソールから、3番目のライブラリがなくても、それはできません – MadProgrammer

+0

@MadProgrammer何ですか? – Jorgan

+0

基本的に、カーソルのようなサードパーティのライブラリに頼らずに、あなたが求めていることは達成できません。 Javaは、コマンドライン入出力のための多くのサポートを提供していません – MadProgrammer

答えて

0

Javaは単にコンソールを使用しているため、1つのキー押しを検出するネイティブな方法はありません。入力は、プログラムによって実際に実行される「Enter」で終わらなければなりません。このように

、あなたのような何かができるキープレスを入力検出エミュレートする:文字列が空の場合

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

我々はラインは常に入力キーが押されたことを意味していることを知っているので、それがあることを意味Enterキーのみが残ります。

ESCキーでは、サードパーティライブラリを使用することが必須である場合はそれを使用する必要があります。そうでない場合は、ユーザーが入力として定義した "ESC"または他のキーワードを実際に書くことができます。

+0

私は以前考えました。私はそれを使うかもしれません、なぜなら、私は第三者のクラスを使わなければならないという気持ちがないからです。キー入力時にこの情報をインターネット上で見つけるのは難しいです。 – Jorgan

関連する問題