найти десятичное число в заданном числе - PullRequest
2 голосов
/ 21 мая 2010

Как я могу найти десятичную (точку) в данном числе в Java.

Я получаю информацию от пользователя, он может дать целочисленное значение или значение с плавающей запятой.

Мне нужно найти, что он ввел целое число или число с плавающей точкой, это возможно?

Если да, ты можешь сказать мне, пожалуйста.

- Спасибо

Ответы [ 5 ]

5 голосов
/ 21 мая 2010

Если вы получили цифры числа в String, это будет

String number = ...;
if (number.indexOf('.') > -1)
  ...
1 голос
/ 21 мая 2010

Предугадывая вашу потребность, я бы посоветовал вам использовать java.util.Scanner для разбора чисел и использовать его hasNextXXX методы вместо обработки parseInt и т. Д. И работы с NumberFormatException. * 1007. *

    import java.util.*;

    String[] inputs = {
        "1",
        "100000000000000",
        "123.45",
        "blah",
        "  "
    };
    for (String input : inputs) {
        Scanner sc = new Scanner(input);
        if (sc.hasNextInt()) {
            int i = sc.nextInt();
            System.out.println("(int) " + i);
        } else if (sc.hasNextLong()) {
            long ll = sc.nextLong();
            System.out.println("(long) " + ll);
        } else if (sc.hasNextDouble()) {
            double d = sc.nextDouble();
            System.out.println("(double) " + d);
        } else if (sc.hasNext()) {
            System.out.println("(string) " + sc.next());
        }
    }

Это печатает:

(int) 1
(long) 100000000000000
(double) 123.45
(string) blah
1 голос
/ 21 мая 2010

Вам не нужно явно искать местоположение десятичной точки, как предлагают некоторые ответы. Просто разберите String на двойное и затем проверьте, представляет ли это двойное целое значение. Это имеет то преимущество, что справляется с научной нотацией для двойников; например «1E-10», а также не удалось проанализировать плохо отформатированный ввод; например «12.34.56» (тогда как поиск символа «.» Не обнаружил бы это).

String s = ...
Double d = new Double(s);
int i = d.intValue();

if (i != d) {
  System.err.println("User entered a real number.");
} else {
  System.err.println("User entered an integer.");
}
1 голос
/ 21 мая 2010

вы можете попробовать с yourNumberString.indexOf("."). Если он возвращает число больше -1, на входе появляется точка.

0 голосов
/ 31 августа 2015

Некоторые другие способы сделать это:

данный

String input = ...

следующее значение истина, если это десятичное число

input.split(".").length == 2

или

input.matches(".+\\..+")

или

!input.matches("\\d+")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...