Próbuję uzyskać dane wejściowe ze skanera i przypisać wartość do tablicy ciągów. Pętla musi działać 3 razy, ale zajmuje tylko dwa wejścia. Czy ktoś może wyjaśnić, dlaczego to nie bierze 3 wejść i nie wyświetla tego samego.

import java.util.Arrays;
import java.util.Scanner;

public class DimentionalArray {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt(); // ex, if size is 3 
        String[] str = new String[size];

        for (int i = 0; i < str.length; i++) {
            str[i] = sc.nextLine(); 
        }
        Arrays.stream(str).forEach(e -> {System.out.println(e);});
    }
}

Na przykład. moje dane wejściowe są

3 //size
1 2 // 1st input 
3 4 //2nd input 
4 5 // 3rd input 

Ale nie czyta wejścia i zamyka się po odczytaniu drugiego wejścia (3 4). Czy ktoś może wyjaśnić, dlaczego nie czyta trzeciego elementu.

1
Hiro 20 listopad 2019, 21:45
1
 – 
Johannes Kuhn
20 listopad 2019, 21:50

2 odpowiedzi

Poprostu dodaj

sc.nextLine(); 

Po int size = sc.nextInt ();

2
Varun Mukundhan 20 listopad 2019, 21:47

Jeśli jesteś zainteresowany tym, co się dzieje, zajrzyj do tego wydania:

Skaner pomija nextLine () po użyciu next () lub nextFoo ()?

0
jgolebiewski 20 listopad 2019, 21:58