Цикл while для определения, является ли введенное значение двойным

1

Я работаю над более крупным проектом, и это просто включено в него. В принципе, я создал класс, который принимает информацию о сотруднике, мы должны иметь его, чтобы пользователь должен был ввести двойную сумму за свою ставку оплаты. Скажите 8.00. Обратите внимание, что пользователь НЕ МОЖЕТ добавить знак доллара, например, 8,00 долларов США, иначе он будет запрашивать у пользователя ошибку. Тем не менее, когда я тестирую запуск кода, вместо того, чтобы использовать подсказку с ошибкой, код просто сбой.

public static double getPayRate()
 {
    double payRate;
    System.out.println("Please enter the employee pay rate (a numeric value): ");
    payRate = console.nextDouble();
    while(console.hasNextDouble())
    {
        System.out.println("An error occured with your input...");
        System.out.println("Please enter the employee pay rate (a numeric value): ");
        payRate = console.nextDouble();
    }
    return payRate;
 }
}
Теги:
loops
while-loop
double

1 ответ

0

Хорошо, используя код, который у вас есть, способ сделать это так. В то время как этот код работает для получения двойного значения, не рекомендуется использовать double при работе с деньгами, обратитесь к этому сообщению для получения дополнительной информации. Почему бы не использовать Double или Float для представления валюты?

import java.util.Scanner;

public class SOTest {

    public static Scanner console = new Scanner(System.in);

    public static double getPayRate()
     {
        while(true)
        {
            System.out.println("Please enter the employee pay rate (a numeric value):");
            try {
                return Double.parseDouble(console.nextLine());
            } catch(NumberFormatException ex) {
                System.out.println("An error occured with your input...");
            }
        }
     }

    public static void main(String[] args) {
        System.out.println(getPayRate());
    }
}
  • 0
    Downvote удален, так как код больше не нагло ошибается. Это все еще ужасно грязно, и я не рекомендовал бы, чтобы кто-нибудь фактически использовал это как бы то ни было. Вы можете просто while(true) и вернуть результат разбора напрямую.
  • 0
    Я никогда не говорил, что рекомендую это. Я показал ему, как делать код, который будет работать для того, что он пытается сделать.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню