Разобрать строку в число - PullRequest
       31

Разобрать строку в число

15 голосов
/ 27 ноября 2011

У меня есть список, в котором будут храниться Количество объектов.Список будет заполняться путем анализа списка строк, где каждая строка может представлять любой подкласс Number.

Как мне разобрать строку в общее число, а не что-то конкретное, например целое число или число с плавающей запятой?

Ответы [ 6 ]

40 голосов
/ 27 ноября 2011

Число не может быть создано, потому что это абстрактный класс. Я бы порекомендовал передать Numbers, но если вы настроили Strings, вы можете проанализировать их, используя любой из подклассов,

Number num = Integer.parseInt(myString);

или

Number num = NumberFormat.getInstance().parse(myNumber);

@ См. NumberFormat

6 голосов
/ 27 ноября 2011

Вы можете использовать класс java.text.NumberFormat. Этот класс имеет метод parse (), который анализирует данную строку и возвращает соответствующие объекты Number.

        public static void main(String args[]){
            List<String> myStrings = new ArrayList<String>(); 
            myStrings.add("11");
            myStrings.add("102.23");
            myStrings.add("22.34");

            NumberFormat nf = NumberFormat.getInstance();
            for( String text : myStrings){
               try {
                    System.out.println( nf.parse(text).getClass().getName() );
               } catch (ParseException e) {
                    e.printStackTrace();
               }
           }
        }
3 голосов
/ 27 ноября 2011

Примерно так:

private static Number parse(String str) {
    Number number = null;
    try {
        number = Float.parseFloat(str);
    } catch(NumberFormatException e) {
        try {
            number = Double.parseDouble(str);
        } catch(NumberFormatException e1) {
            try {
                number = Integer.parseInt(str);
            } catch(NumberFormatException e2) {
                try {
                    number = Long.parseLong(str);
                } catch(NumberFormatException e3) {
                    throw e3;
                }       
            }       
        }       
    }
    return number;
}
2 голосов
/ 16 сентября 2015

вы можете получить Number из String, используя commons.apache api -> https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/index.html

Использование:

String value = "234568L";  //long in the form string value
Number number = NumberUtils.createNumber(value);
2 голосов
/ 27 ноября 2011

Простой способ - просто проверить точку Pattern.matches("\\.").Если у него есть точка разбора как Float.parseFloat() и проверьте исключение.Если есть исключение, проанализируйте как Double.parseDouble().Если у него нет точки, просто попробуйте разобрать Integer.parseInt(), а если это не удалось, перейдите на Long.parseLong().

1 голос
/ 27 ноября 2011
Integer.valueOf(string s)

возвращает объект Integer, содержащий значение указанной строки.

Integer является специализированным объектом Число

...