Przejście dowolnym klawiszem i wybór T/N

0

Zaczynam przygodę z javą, muszę zrobić pracę a nie potrafię zrobić dwóch rzeczy, proszę o pomoc.
1.Jak zrobić aby program dalej się wykonywał po naciśnięciu dowolnego klawisza bez ENTER
nie chodzi mi tutaj o Wej.readLine() bo tutaj zawsze trzeba enter nacisnąć.
2.Jak zrobić aby kontynuować działanie programu klawiszem "T" a przerwać "N" czyli coś w stylu:
Chcesz powtórzyć program T/N
Potrafię zrobić na zasadzie 1-Tak 2-Nie ale chcę aby to było na zasadzie wyboru T/N
mam nadzieję że napisałem zrozumiale.
Jeszcze raz proszę o pomoc.

0

Ad. 1) W aplikacji konsolowej nie da się.
Ad. 2)

String line = Character.toString((char)System.in.read());
if("T".equalsIgnoreCase(line)) cosTam();
else cosTamInnego();
0
  1. Oczywiście, że możesz użyć read oraz readLine - tyle, że w potrzebujesz skanowania klawiatury niezależnego od systemu standardowego wejścia i wyjścia. Tu masz rozwiązanie, które już ktoś zrobił
    http://jline.sourceforge.net/

  2. Odczyt klawiszy czy znaków T i N nie różni się niczym od 1 czy 2. Po prostu sprawdzasz otrzymane z klawiatury znaki lub kody klawiszy i zależnie od ich wartości odpowiednio reagujesz. Większość takich sprawdzeń robi się pętlą. Coś w tym stylu:

do
{
	pytanie(); //pierwsze lub powtórzone
	int kodZnaku = odczytKlawiatury(); //i tu jest problem z Javą, żeby był to odczyt niebuforowany
	//w przypadku odczytu możemy znaków utożsamić małe i duże litery lub interpretację strzałek
	//z różnych części klawiatury np. WSAD jako UP, DOWN, LEFT, RIGHT lub z numerycznej
	//za pomocą Character.toLowerCase() lub .toUpperCase() lub własnego kodu
	if(kodZnaku == 't')
		rezultat = true;
	else if(kodZnaku == 'n')
		resultat = false;
	else if(kodZnaku == ESC)
		rezultat = false;
	//...
	else continue;
	break;
} while(true);

1 użytkowników online, w tym zalogowanych: 0, gości: 1