@nedevochka

Цикл for с вводом в консоль исполняется дважды, дебаг не производится?

Пользуюсь NetBeans, реализуй данный цикл, если ввести значение не S, то в консоль выводится
Проход #0
Проход #1
То есть цикл проходит дважды, я не понял последовательность выполнения программы, почему он проходит дважды
Попытался воспользоваться дебагером NetBeans, чтобы проследить выполнение действий, дебагер просто долго грузится, видимо, когда осуществляется ввод через консоль, то дебагер работать не будет или нужно использовать какой-то другой подход.
public class JavaApplication51 {

/**
* @param args the command line arguments
*/
public static void main(String[] args)
throws java.io.IOException {
int i;

System.out.println("Для остановки нажмите клавишу S");

for(i = 0; (char) System.in.read() != 'S'; i++)
System.out.println("Проход #" + i);

}

}
  • Вопрос задан
  • 93 просмотра
Решения вопроса 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
Рекомендую использовать Intellij IDEA Community Edition или Eclipse, хотя это не имеет отношения к проблеме.
Что касается вашего вопроса, то символ 'Enter' тоже символ. Отсюда и 2 прохода
Попробуйте:
public static void main(String[] args)  {
    
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
      char symbol = scanner.next().charAt(0);
      if (symbol == 'S') {
        System.exit(-1);
      }
    }

  }
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Поздравляю, вы открыли буферизированный ввод и непечатаемые символы. На второй итерации считывается символ \n
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы