Получение первой цифры числа

Я просто изучаю Java и пытаюсь получить мою программу для получения первой цифры числа - например, 543 должен возвращать 5 и т.д. Я думал преобразовать в строку, но я не уверен, как я могу конвертировать его обратно? Спасибо за любую помощь.

int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????

Ответ 1

    int number = 534;
    int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));

Ответ 2

Почти наверняка более эффективно, чем использование строк:

int firstDigit(int x) {
    while (x > 9) {
        x /= 10;
    }
    return x;
}

(работает только для неотрицательных целых чисел.)

Ответ 3

firstDigit = number/((int)(pow(10,(int)log(number))));

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

В вашем примере log (543) = 2.73, который передан в int, равен 2. pow (10, 2) = 100 543/100 = 5.43, но поскольку он int int усекается до 5

Ответ 4

int number = 534;
int firstDigit = number/100; 
Оператор

(/) в java делит числа без учета напоминания, поэтому, когда мы делим 534 на 100, он дает нам (5).

но если вы хотите получить последнее число, вы можете использовать оператор (%)

    int lastDigit = number%10; 

что дает нам напоминание о делении, поэтому 534% 10 даст число 4.

Ответ 5

int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);

Ответ 6

Integer.parseInt возьмет строку и вернет int.

Ответ 7

int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));

Ответ 8

Этот пример работает для любых двойных, а не только натуральных чисел и учитывает отрицательные числа или числа, меньшие единицы. Например, 0.000053 вернет 5.

private static int getMostSignificantDigit(double value) {
    value = Math.abs(value);
    if (value == 0) return 0;
    while (value < 1) value *= 10;
    char firstChar = String.valueOf(value).charAt(0);
    return Integer.parseInt(firstChar + "");
}

Чтобы получить первую цифру, это связано с манипуляцией с строками, поскольку ее намного легче читать.

Ответ 9

Этот способ может иметь больше смысла, если вы не хотите использовать методы str

int first = 1;
for (int i = 10; i < number; i *= 10) {
    first = number / i;
}