problemik z Scanner nextLIne

0

Cześć,
zabrałem się za naukę Javy w JetBrains Academy (nauka samego programowania jak i Intelij IDEA) i napotkałem problem, którego nie potrafię zrozumieć.
Oto treść zadania:

Write a program that reads five words from the standard input and outputs each word in a new line. The words should be in the same order.

Sample Input 1:
This Java course
is adaptive

Sample Output 1:
This
Java
course
is
adaptive

Napisałem więc kilka linijek kodu, który działa odpalany poprzez Linuxowy terminal ale nie w samym Intelij IDEA. Poniżej kod

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String lineOne = scan.nextLine();
        String lineTwo = scan.nextLine();

        String whole = lineOne.concat(" " + lineTwo);
        System.out.println(whole.replaceAll(" ", "\n"));
    }
}

Intelij wypluwa taki błąd:

Runtime error
Exception in thread "main" java.util.NoSuchElementException: No line found at java.base/java.util.Scanner.nextLine(Scanner.java:1651) at Main.main(Main.java:9)

Java docs mówi o tym tutaj https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()
No i nie rozumiem dlaczego coś co działa w terminalu nie chce działać w IDE krzycząc o brak nowej linii.
Może mi ktoś wytłumaczyć dlaczego tak się dzieje (w IDE) i jak tego uniknąć w przyszłości?

0

Powinieneś raczej wczytywać słowa zamiast całych linni.
Wczytywanie powinno odbywać się w pętli.
Najprostszy przykład:

Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
   String word = scanner.next();
   System.out.println(word);
}
1
Piotr Mazek napisał(a):

Java docs mówi o tym tutaj https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()
No i nie rozumiem dlaczego coś co działa w terminalu nie chce działać w IDE krzycząc o brak nowej linii.
Może mi ktoś wytłumaczyć dlaczego tak się dzieje (w IDE) i jak tego uniknąć w przyszłości?

Gdybym miał zgadywać to bym powiedział że program po uruchomieniu w IDE nie ma tekstu i Od razu wczytuje EOF przez co się wywala...
Tylko że u mnie w IDE działa bez zarzutu. Może masz coś źle w ustawieniach IDE?

0
Kamil Żabiński napisał(a):

Gdybym miał zgadywać to bym powiedział że program po uruchomieniu w IDE nie ma tekstu i Od razu wczytuje EOF przez co się wywala...
Tylko że u mnie w IDE działa bez zarzutu. Może masz coś źle w ustawieniach IDE?

Co do IDE to ustawienia są dostarczane przez kursodawcę. Co do sugestii odnośnie EOF, to wydaje się to rozsądnym rozwiązaniem.

0

Prawdopodobnie dane wejściowe są tylko w jednej linii, a w opisie były dwie linie żeby się ładnie mieściły na ekranie. Scanner załadował wszystko do pierwszej linii, i nie miał co włożyć do kolejnej. Zresztą w opisie jest napisane, żeby w czytać pięć wyrazów, a nie dwie linijki.

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