Ответ 1
int number = 534;
int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
Я просто изучаю Java и пытаюсь получить мою программу для получения первой цифры числа - например, 543 должен возвращать 5 и т.д. Я думал преобразовать в строку, но я не уверен, как я могу конвертировать его обратно? Спасибо за любую помощь.
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));
Почти наверняка более эффективно, чем использование строк:
int firstDigit(int x) {
while (x > 9) {
x /= 10;
}
return x;
}
(работает только для неотрицательных целых чисел.)
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
int number = 534;
int firstDigit = number/100;
Оператор (/) в java делит числа без учета напоминания, поэтому, когда мы делим 534 на 100, он дает нам (5).
но если вы хотите получить последнее число, вы можете использовать оператор (%)
int lastDigit = number%10;
что дает нам напоминание о делении, поэтому 534% 10 даст число 4.
int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);
Integer.parseInt
возьмет строку и вернет int.
int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));
Этот пример работает для любых двойных, а не только натуральных чисел и учитывает отрицательные числа или числа, меньшие единицы. Например, 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 + "");
}
Чтобы получить первую цифру, это связано с манипуляцией с строками, поскольку ее намного легче читать.
Этот способ может иметь больше смысла, если вы не хотите использовать методы str
int first = 1;
for (int i = 10; i < number; i *= 10) {
first = number / i;
}