質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

Q&A

解決済

2回答

1630閲覧

KeyListenerをコンソール画面で使いたい JFrame等を利用しない。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

0グッド

0クリップ

投稿2021/09/07 11:27

編集2021/09/08 03:40

###やりたい事
JFrame等のGUIを使わずにCUI(コンソール画面で)のみで特定のキーが押されるまで待機する方法

###質問内容
特定のキーが押されるまで待機する処理の作り方が知りたいです。十字キーのが押されるまで待機して押されたら上に移動するなどをのエスケープシーケンスを実行させたいです。 GUIは使わないのでコンソール画面でやる方法が知りたいです。

###参考サイト
Scanner: https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html
System.in : https://docs.oracle.com/javase/jp/8/docs/api/java/lang/System.html
Jframe: https://nompor.com/2017/12/10/post-1924/

java

1import java.applet.*; 2import java.awt.*; 3import java.awt.event.*; 4import java.awt.event.KeyListener; 5import java.io.BufferedReader; 6import java.util.Scanner; 7import java.io.InputStreamReader; 8import java.io.IOException; 9public class Main 10{ 11 public static void main(String[] args) 12 { 13 Scanner scanner = new Scanner(System.in); 14 15 while (true) 16 { 17 if(scanner.hasNext() == true) 18 { 19 if(scanner.nextLine() == "z") 20 { 21 System.out.println("ああ"); 22 } 23 } 24 25 } 26 } 27}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

基本的にコンソールは行単位で入力・表示するためのモノであり、カーソルを自由に動かすようには出来ておりません。
それをムリヤリでも動かせるようにエスケープシーケンス等が作られましたが、それでも詳細を分かっていらっしゃらない方が簡単に(GUIでのように)使えるようになったわけではありません。
"それでも" とムリヤリを繋げていくなら、結局(他のご質問の回答に紹介されたような)既にあるライブラリを"再生産する以上の労力"を使って"同等以下のモノ"を作ることになります。
このまま関連するご質問を続けられても、得るものは無いように思えます。

投稿2021/09/08 03:56

jimbe

総合スコア12632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

java.awt.event.KeyListener はGUIに対してキー入力イベントを張る為のリスナーなので
CLIでは適用されません。

また標準で提供されているSyste.inやBufferedReaderは
エンターキーのイベントを以て発火する為、今回の要件には満たないでしょう。

JLineというライブラリが要件を満たしそうなので、これを使用する事を提案します。

Javaでコンソールでのキー入力を1文字ずつハンドルしたいときにJLineを使う
https://qiita.com/hrkt/items/885f1c3526af03939c54

投稿2021/09/08 03:48

Luice

総合スコア771

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/08 03:49

ありがとうざいます。質問ですが低レベルの操作等でも方法はないのでしょうか?
Luice

2021/09/08 03:55

自分が知る限りでは無いです。 標準機能にあればライブラリを作成しようとは作者の方も思わないでしょうし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問