Проверка правильности ввода, если вход двойной - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу проверить, правильно ли введен ввод данных.Например, если пользователь вводит int, когда я хочу, чтобы он ввел double, программа сообщает ему, что произошла ошибка.Это то, что я до сих пор:

System.out.println("Enter the temperature in double:");
String temp = input.nextLine();
try
{
    Double temperature = Double.parseDouble(temp);
}
catch(Exception e)
{
    isValid = false;
    System.out.println("Temperature  must be a double ");
}

Все, что он делает, продолжается через программу, а не выводит сообщение об ошибке при вводе int.Я застрял на этом какое-то время, поэтому любая помощь будет признательна.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Поскольку вы не хотите, чтобы int был принят, вы можете просто добавить if, чтобы проверить, имеет ли вход String десятичную точку или нет.

    System.out.println("Enter the temperature in double:");
    String temp = (new Scanner(System.in)).next();
    if (temp.contains(".")) {
        try {
            Double temperature = Double.parseDouble(temp);
        } catch(Exception e) {
            isValid = false;
            System.out.println("Temperature  must be a double ");
        }
    } else {
        isValid = false;
        System.out.println("Temperature  must be a double ");
    }
0 голосов
/ 15 февраля 2019

Я думаю, что вы хотите проверить только десятичные числа (не включая целые числа).Если это так, то вы можете использовать regex для того же самого:

System.out.println("Enter the temperature in double:");
String temp = input.nextLine();
while (temp != null && !temp.matches("^[0-9]*\\.([0-9]+)+$")) {       // use of regex here
    System.out.println("Enter the temperature in double:");
    temp = input.nextLine();                                          // read input again
}

Это будет циклично, пока пользователь не введет только действительный десятичный ввод.Объяснение это регулярное выражение .

...