При проверке ввода цены с помощью hasNextDouble() он печатает «Неверный ввод» и только затем запрашивает ввод. ⇐ JAVA
-
Anonymous
При проверке ввода цены с помощью hasNextDouble() он печатает «Неверный ввод» и только затем запрашивает ввод.
Итак, у меня есть Java-программа, которая требует от пользователя добавления продуктов в систему. При проверке цены продукта я получаю следующий результат:
Введите цену продукта: Введите количество доступных предметов: Похоже, что поле «Цена продукта» каждый раз пропускается и переходит к полю «Количество доступных продуктов:».
Это моя реализация проверки входных данных.
Изменить:
import java.util.*; общественный класс Main { public static void main(String[] args) { Ввод сканера = новый сканер(System.in); // двойная цена продукта = 0.0; System.out.print("\nВведите имя продукта: "); Строка ProductName = input.next(); // System.out.println(); System.out.print("\nВведите цену продукта: "); // Проверяем, является ли введенная цена действительным типом double/int while (!input.hasNextDouble()) { // System.out.flush(); System.out.print("\nНеверный ввод"); input.nextLine(); System.out.print("\nВведите цену продукта: "); } двойная цена продукта = input.nextDouble(); System.out.print("\nВведите количество доступных элементов: "); int noOfAvailableItems = input.nextInt(); } } После нескольких тестов различных входных данных я обнаружил загадочное поведение.
Когда я ввожу значение без пробела для названия продукта, как показано ниже, в поле «Цена» появляется запрос на ввод в установленном порядке.
Введите название продукта: iphone13 Введите цену продукта: 99,00 Однако
Для ввода, такого как Iphone 13, с пробелом, поле «Цена продукта» полностью пропускается. Я не уверен, что может быть причиной этого.
Введите название продукта: iphone 15 Введите цену продукта: Введите количество доступных предметов: Вышеупомянутое — лишь небольшая выдержка из моего кода, поскольку это делается для задания.
Я попробовал несколько вариантов проверки, но ни один из них не помог решить эту проблему.
сделать { input.nextLine(); System.out.println("Неверный ввод"); System.out.print("\nВведите цену продукта: "); } while (!input.hasNextDouble()); двойная цена продукта = input.nextDouble(); Я попробовал еще один подход, но на этот раз результат был следующим:
Введите цену продукта: неверный ввод. Введите цену продукта: Изменить: Как уже упоминалось, добавлен минимально воспроизводимый пример.
Итак, у меня есть Java-программа, которая требует от пользователя добавления продуктов в систему. При проверке цены продукта я получаю следующий результат:
Введите цену продукта: Введите количество доступных предметов: Похоже, что поле «Цена продукта» каждый раз пропускается и переходит к полю «Количество доступных продуктов:».
Это моя реализация проверки входных данных.
Изменить:
import java.util.*; общественный класс Main { public static void main(String[] args) { Ввод сканера = новый сканер(System.in); // двойная цена продукта = 0.0; System.out.print("\nВведите имя продукта: "); Строка ProductName = input.next(); // System.out.println(); System.out.print("\nВведите цену продукта: "); // Проверяем, является ли введенная цена действительным типом double/int while (!input.hasNextDouble()) { // System.out.flush(); System.out.print("\nНеверный ввод"); input.nextLine(); System.out.print("\nВведите цену продукта: "); } двойная цена продукта = input.nextDouble(); System.out.print("\nВведите количество доступных элементов: "); int noOfAvailableItems = input.nextInt(); } } После нескольких тестов различных входных данных я обнаружил загадочное поведение.
Когда я ввожу значение без пробела для названия продукта, как показано ниже, в поле «Цена» появляется запрос на ввод в установленном порядке.
Введите название продукта: iphone13 Введите цену продукта: 99,00 Однако
Для ввода, такого как Iphone 13, с пробелом, поле «Цена продукта» полностью пропускается. Я не уверен, что может быть причиной этого.
Введите название продукта: iphone 15 Введите цену продукта: Введите количество доступных предметов: Вышеупомянутое — лишь небольшая выдержка из моего кода, поскольку это делается для задания.
Я попробовал несколько вариантов проверки, но ни один из них не помог решить эту проблему.
сделать { input.nextLine(); System.out.println("Неверный ввод"); System.out.print("\nВведите цену продукта: "); } while (!input.hasNextDouble()); двойная цена продукта = input.nextDouble(); Я попробовал еще один подход, но на этот раз результат был следующим:
Введите цену продукта: неверный ввод. Введите цену продукта: Изменить: Как уже упоминалось, добавлен минимально воспроизводимый пример.
Мобильная версия