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 = ????
int number = 534;
int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
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.)
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
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.
int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);
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.
Integer.parseInt
prendra une chaîne et retournera un int.
int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));
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;
}