Wczytanie znaku

0

witam ;)
jestes dosc poczatkujacy i mam male pytanie potrzebuje napisac funkcje gdzie przy nacisnieciu klawisza np. "W" moje auto przyspieszy.... "S" zwolnij ale to bedzie analogicznie....jezeli nacisne "raz" literke w wyswietli mi 1.... ale jezeli nacisne... wwwwwwww....wyswietla sie 0...dziekuje z gory :)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Auto {
	String marka;
	int predkosc=0;
	
	Auto(String marka, int predkosc){
		this.marka = marka;
		this.predkosc=predkosc;
	}
	
	void przyspiesz(){
		String linia="";
		
		BufferedReader przyspiesz = new BufferedReader (new InputStreamReader(System.in));
		System.out.print("Rusz Silnikiem");
		System.out.flush();
		System.out.println();
		try{
			do{
			linia=przyspiesz.readLine();
			
				if(linia.equals("w")){
					this.predkosc=this.predkosc+1;
					
				}
				
				System.out.println(this.predkosc);
			
	
			}while(!linia.equals("w"));
			
		}catch(IOException e){
			System.out.println(e.getMessage());
		}
	}
}
0

Jak chcesz wprowadzać znaki? Naciskasz 'w', a później enter. Następnie kolejny znak i znowu enter?

Niestety inaczej się nie da. Większość terminali działa w tzw. trybie kanonicznym - przekazuje dane do programu dopiero po wciśnięciu entera.

Istnieją pewne obejścia dla niektórych terminali, ale nie są one przenośne i nie są dostępne w Javie.

Jakie jest rozwiązanie?
Użyć programu okienkowego napisanego w Swingu, gdzie obsługę klawiszy masz "za darmo".

Btw. ilość znaków w napisie wyznacza się następująco:

int ile = 0;
for(char c: s.toCharArray()){
   if (c == 'w'){
	ile++;
    }
}
0

dzieki wielkie ;)

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