Zapisywanie liczb podanych w konsoli po użyciu entera

0

Witam. Jak w Javie mogę zapisać warunek który będzie przyjmował do tablicy kolejne liczby które zostaną wpisane w konsoli? Nie było by to problemem gdyby nie to, że chciałbym od użytkownika pobierać po jednej liczbie po każdym użyciu entera. Ilość liczb którą podaje użytkownik, przy każdym uruchomieniu programu może się zmieniać, więc nie mogę na sztywno założyć np :

 
Scanner liczba = new Scanner(System.in);
int l1 = liczba.nextInt();
int l2 = liczba.nextInt();

bo jeśli użytkownik poda 3 liczby lub więcej to program nie zadziała poprawnie.

Mógłbym pobrać te liczby od użytkownika który by je wpisał oddzielając od siebie spacją a następnie sprawdzić czy to już wszystkie za pomocą metody .hasNextInt(); ale zależy mi na tym żeby pobrać te liczby przy użyciu entera. Miałoby to wyglądać mniej więcej tak :
INPUT :

4 //enter
5121 // enter
122 // enter
n... //enter

OUTPUT :
4
5121
122
n...

Zaznaczam, że ilość wprowadzonych liczb może się zmieniać i np po wciśnięciu jakiegoś klawisza program przestaje pytać o liczby i zaczyna wykonywać np jakieś działania na wprowadzonych liczbach.

Coś w stylu :

wykonuj (int liczba[n] = liczba.nextInt)
dopóki (System.in != klawisz) ( 

Proszę o jakieś sugestię jak to zrobić. Albo może ktoś ma na to jakiś lepszy sposób ? Jeśli tak to z chęcią podpatrzę, ale mimo wszystko chciałbym rozwiązać ten problem :)

0

Wygląda jak SPOJ tak więc nie używaj scannera bo szybkość ma tragiczną.

0

Ale mimo to pomogłeś, po prostu nie rozumiałem do końca działania tych metod i samej klasy. Już się troszkę douczyłem ale nie mogę znaleźć metody która odpowiadałaby za skanowanie konsoli w poszukiwaniu typu char, istnieje w ogóle taka? Napisałbyś mi kod który wyświetla liczby całkowite podane w konsoli do momentu w którym "spotka" znak 'L' ? Próbuje na różne sposoby ale nie mogę tego ogarnąć

EDIT : Mam coś takiego teraz :

Scanner scan = new Scanner(System.in);
String znak = "l";
	
do {

	System.out.println(scan.next());

	

}while(scan.next() != scan.next(znak));

i nie działa, sypie się strasznie i w ogóle jakoś dziwnie się zachowuje.

Dla mnie to wygląda tak : pokazuj, każdy kolejny znak dopóki ten znak jest różny od "l". A program, pokazuję tylko pierwszy znak, przyjmuję następny lub parę których już nie wyświetla albo się sypie od razu, różnie. Nie rozumiem ;p

1

Źle rozumiesz działanie funkcji next(), ona nie czyta znaku, ona czyta cały token. Po wpisaniu 234l next() zwróci("234l"). Co do kodu, jak umieszczone "L" ma kończyć wpisywanie, tylko samotne L, czy również takie napisy 234L78, L555, 666L? W najprostszym przypadku (wiersze zawierają poprawne liczby, ostatni wiersz zawiera małe lub duże "L":

        ArrayList<Integer> liczby = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine())
        {
            String s = sc.nextLine();
            if(s.equalsIgnoreCase("L"))
            {
                break;
            }
            liczby.add(Integer.parseInt(s));
        }

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