Я вижу много ошибок в вашем коде, я проведу вас через них.
1) Слишком сложные, слишком многословные проверки, которые не нужны 2) Неправильное использование метода #equals 3) Несоблюдение стандартных соглашений об именах 4) Общее недопонимание того, как структурировать чтение ввода l oop
Чтобы расширить их:
1) Попытайтесь упростить ваш код, уберите значение while true l oop и предложение else (см. Пункт 4), объявите переменные только один раз, извлеките излишние скобки. Кроме того, расстояние может быть вычислено как Math.hypot(x1-x2, y1-y2)
(см. здесь )
2) Обратите внимание, что метод equals
должен использоваться для проверки, является ли объект равно другому объекту. Если бы в вашем примере возвращалось значение true, это означало бы, что сам сканер имеет значение null (а не то, что он читает), поэтому проверка не может работать, потому что будет выдано исключение NullPointerException (вызов метода на нулевом сканере). Чтобы проверить, является ли сканер (или какой-либо объект) нулевым, вы вместо этого хотите сделать anyObject == null
. Обратите внимание, что это не имеет никакого отношения к входу сканера (см. Пункт 4).
3) Пожалуйста, правильно называйте переменные ( см. Здесь ).
4) Если вы хотите продолжить чтение пользовательского ввода до точки, когда больше нет ввода, вам следует использовать Scanner # hasNext . Если вместо этого вы хотите завершить ввод пустой строки, вам действительно следует проверить, что строка пуста. Это не имеет никакого отношения к сканеру, являющемуся нулевым. someString.isEmpty()
сделает всю работу за вас.
Pseudo l oop:
while(scanner.hasNextLine() && !((line = scanner.nextLine()).isEmpty()))
//do something with the input, stored in the line String
//Exits when enter is pressed (or EOF)