что не так с indexOf в этом коде?почему я получаю -1, когда пытаюсь напечатать indexOf answer1? - PullRequest
0 голосов
/ 14 декабря 2018
public static void main(String[] args) {
    // write your code here
        ArrayList<String>line1=new ArrayList<String>();
        line1.add("el marg");
        line1.add("ezbt el nakhl");
        line1.add("ain shams");
        line1.add("el matria");
        line1.add("el helmia");
        Scanner s=new Scanner(System.in);
        System.out.println("Entry Station");
        String answer1=s.next();
        Scanner a=new Scanner(System.in);
        System.out.println("Exit Station");
        String answer2=a.next();

        System.out.println(line1.subList(line1.indexOf(answer1),line1.indexOf(answer2)));
    }
}

Я хочу напечатать список железнодорожных станций, который между станцией въезда и станцией выхода, но что-то не так, он дает мне -1, даже если пользователь набрал станцию ​​в массиве

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

проверьте название станции, что вы пишете в терминале.Потому что значение -1 возвращается, когда idexOf не находит слово.Напечатайте название станции терминала записи и проанализируйте пробелы или Enter, которые могут быть добавлены в переменную answer1, и answer2

0 голосов
/ 14 декабря 2018

Все имена ваших станций имеют пробелы.

s.next() будет считывать следующий токен из Scanner, в котором не будет пробела.

Использование s.nextLine() вместо.


В качестве общего совета по устранению такой проблемы попробуйте просмотреть значения answer1 и answer2 в своем отладчике (или даже просто распечатать их).Тогда должно быть совершенно очевидно, почему он не совпадает.

...