На данный вопрос уже ответили:
Хочу закрыть свой Scanner, если впишу слово Stop
Scanner sc = new Scanner (System.in);
String[] words1 = new String[25] ;
for (int i = 0; i < 25; i++) {
if (sc.nextLine().equals("Stop")) {
System.exit(0);
}
else{
words1[i]=sc.nextLine();
}}
for (int i = 0; i < words1.length; i++) {
System.out.print(words1[i]+" ");
}
Но не получается. Ввод данных продолжается, если вписываю Stop. + не выводится массив.
Проблема скорее всего в том, что вы используете ==
для сравнения слов, а Java
по ==
сравниваются ссылки, используйте sc.nextLine().equals("Stop")
Вот полностью рабочий код
Scanner sc = new Scanner(System.in);
String[] words1 = new String[25];
for (int i = 0; i < 25 && sc.hasNextLine(); i++) {
String nextLine = sc.nextLine();
if (nextLine.equalsIgnoreCase("stop")) {
break;
}
words1[i] = nextLine;
}
for (String aWords1 : words1) {
System.out.print(aWords1 + " ");
}
Первая проблема которая у вас была, это то, что вы делали итерации не смотря на то, что строчки уже закончились. Поправлено добавлением && sc.hasNextLine()
.
Вторая проблема была в том, что Вы писали так
if (sc.nextLine().equals("Stop")) {
System.exit(0);
}
else{
words1[i]=sc.nextLine();
Вы два раза вызывали nextLine
, первый раз строка была, а второй раз уже нет, потому что nextLine
не возвращает постоянно одно и тоже значение в одной итерации, это не идемпотентный метод.
Ну и еще одна проблема была в том, что Вы вызвали System.exit(0)
, если встретили слово stop
, а это завершает выполнение jvm
, и Вы никогда бы не дошли до цикла который выводит значения массива
Дополнительно. У Scanner вызывать метод close
нельзя когда Вы передаете ему System.in
, потому что он закрывает поток который ему передали и таким образом вы можете случайно закрыть System.in
, а потом долго искать ошибку
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть объект GoogleMap, находящийся в MapView и задача рисовать в нем кольца с некоторой прозрачностьюПричем кольца должны быть построены по метрам
Необходимо реализовать подписку на ежедневный прогноз погодыНе получатся "захватить" параметры для текущего местоположения при команде...
Нужно передать сюда:
У меня есть JSP страница, в которой список radioButton заполняется так: