При проверке ввода цены с помощью hasNextDouble() он печатает «Неверный ввод» и только затем запрашивает ввод.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 При проверке ввода цены с помощью hasNextDouble() он печатает «Неверный ввод» и только затем запрашивает ввод.

Сообщение Anonymous »


Итак, у меня есть 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(); Я попробовал еще один подход, но на этот раз результат был следующим:

Введите цену продукта: неверный ввод. Введите цену продукта: Изменить: Как уже упоминалось, добавлен минимально воспроизводимый пример.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»