Рубрики
Без рубрики

Java – Преобразование Строки представлять

Мы можем использовать `Integer.parseInt()` или `Integer.valueOf()` для преобразования строки в int, всегда проверяйте входные данные, чтобы избежать исключения NumberFormatException.

В Java мы можем использовать Integer.parseInt() или Integer.valueOf() для преобразования строки в int.

  • Целое число.Синтаксический анализ() – вернуть примитив int .
  • Integer.valueOf() – возвращает Целое число объект.

Для положительного или отрицательного числа в строке преобразование одно и то же.

  String number = "7";

  // result = 7
  int result = Integer.parseInt(number);
  // result2 = 7
  Integer result2 = Integer.valueOf(number);
  String number = "-7";

  // result = -7
  int result = Integer.parseInt(number);
  // result2 = -7
  Integer result2 = Integer.valueOf(number);

1. Для положительного или отрицательного числа в ||строке|| преобразование одно и то же.

1.1 Просмотрите исходный код JDK класса Integer , обе сигнатуры метода одинаковы, используя parseInt(s,10) для преобразования, но возвращайте другой результат.

package java.lang;

public final class Integer extends Number
        implements Comparable, Constable, ConstantDesc {

        public static Integer valueOf(String s) throws NumberFormatException {
          return Integer.valueOf(parseInt(s, 10));
        }

        public static int parseInt(String s) throws NumberFormatException {
          return parseInt(s,10);
        }

        //...
}

2. Исключение NumberFormatException

2.1 Оба Integer.parseInt() и Integer.valueOf(строка) методы вызовут Исключение NumberFormatException если ввод не является допустимой цифрой.

  String number = "10AA";
  Integer result = Integer.parseInt(number);

Выход

java.lang.NumberFormatException: For input string: "10A"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
	at java.base/java.lang.Integer.parseInt(Integer.java:658)
	at java.base/java.lang.Integer.valueOf(Integer.java:989)

3. Integer.parseInt() – Преобразование строки представлять

3.1 В этом примере преобразуется строка 999 к примитивному типу int .

package com.mkyong;

public class StringExample1 {

    public static void main(String[] args) {

        String number = "999";

        try {

            int result = Integer.parseInt(number);
            System.out.println(result);

        } catch (NumberFormatException e) {
            System.err.println("Unable to convert input string :" + number + " to int");
        }

    }

}

Выход

999

3.2 Для строки 999AA , недопустимой цифры, она вызовет исключение NumberFormatException , и мы поймаем его и отобразим другое более понятное сообщение об ошибке.

  String number = "999AA";

Выход

  Unable to convert input string :999AA to int

4. Integer.valueOf – Преобразовать строку в целое число

4.1 В этом примере преобразуется строка 123 к Целочисленному объекту.

package com.mkyong;

public class StringExample2 {

    public static void main(String[] args) {

        String number = "123";

        try {

            Integer result = Integer.valueOf(number);
            System.out.println(result);

        } catch (NumberFormatException e) {
            System.err.println("Unable to convert input string :" + number + " to Integer");
        }

    }

}

Выход

  123

4.2 Для ввода Строка

  Unable to convert input string :123A to Integer

5. Лучшая практика – isDigit() +Целое число.Синтаксический анализ

Лучше всего проверять входные данные; исключение NumberFormatException выбрасывается дорого.

5.1 Рассмотрим следующий пример, мы используем регулярное выражение Строка.соответствует("[0-9]*") чтобы проверить, являются ли входные данные допустимыми цифрами.

package com.mkyong;

public class StringExample3 {

    public static void main(String[] args) {

        String number = "-100";
        if (isDigit(number)) {
            System.out.println(Integer.parseInt(number));
        } else {
            System.out.println("Please provide a valid digit [0-9]");
        }

    }

    public static boolean isDigit(String input) {

        // null or length < 0, return false.
        if (input == null || input.length() < 0)
            return false;

        // empty, return false
        input = input.trim();
        if ("".equals(input))
            return false;

        if (input.startsWith("-")) {
            // negative number in string, cut the first char
            return input.substring(1).matches("[0-9]*");
        } else {
            // positive number, good, just check
            return input.matches("[0-9]*");
        }

    }

}

Выход

  -100

6. Java 8

6.1 Разработчики, такие как Java 8, в этом примере пытаются использовать Java 8 Необязательно и Поток для преобразования Строка в Целое число .

package com.mkyong;

import java.util.Optional;

public class StringExample4 {

    public static void main(String[] args) {

        String number = "10";

        Optional result = Optional.ofNullable(number)
                .filter(StringExample3::isDigit)
                .map(Integer::parseInt);

        if (result.isEmpty()) {
            System.out.println("Please provide a valid digit [0-9]");
        } else {
            System.out.println(result.get());
        }

    }

}

Выход

  10

Рекомендации

Оригинал: “https://mkyong.com/java/java-convert-string-to-int/”