web-dev-qa-db-fra.com

Récupération du premier chiffre d'un numéro

Je suis en train d'apprendre Java et j'essaie de faire en sorte que mon programme récupère le premier chiffre d'un nombre - 543, par exemple, devrait en renvoyer 5, etc. Merci pour toute aide.

int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????
14
Michoel
    int number = 534;
    int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
22
Jordan Allan

Presque certainement plus efficace que d'utiliser des chaînes:

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

(Fonctionne uniquement pour les entiers non négatifs.)

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

Cela devrait obtenir votre premier chiffre en utilisant math au lieu de chaînes.

Dans votre exemple, log (543) = 2,73 qui correspond à un int vaut 2 . Pow (10, 2) = 100 543/100 = 5,43 mais, comme il s'agit d'un int, il est tronqué à 5

18
Ben Burnett
int number = 534;
int firstDigit = number/100; 

L'opérateur (/) en Java divise les nombres sans tenir compte du rappel. Ainsi, lorsque nous divisons 534 par 100, cela nous donne (5).

mais si vous voulez obtenir le dernier numéro, vous pouvez utiliser l'opérateur (%) 

    int lastDigit = number%10; 

ce qui nous donne le rappel de la division, donc 534% 10, donnera le nombre 4.

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

Cet exemple fonctionne pour tous les doubles, pas seulement les entiers positifs, et prend en compte les nombres négatifs ou inférieurs à un. Par exemple, 0,000053 renverrait 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 + "");
}

Pour obtenir le premier chiffre, utilisez la manipulation de chaîne car il est beaucoup plus facile à lire.

0
Brian Risk

Integer.parseInt prendra une chaîne et retournera un int.

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

Cette façon de faire pourrait être plus logique si vous ne voulez pas utiliser les méthodes str

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