Вопрос
Есть ли что-то, что я могу использовать, чтобы узнать, начинается ли число с той же цифры, что и другая? Ex. 5643 и 5377 оба начинаются с пяти. Р>
Есть ли способ сделать это с помощью чисел или они должны быть строками? (StartsWith?) Р>
Решение
Ich n1 и n2 - ваши номера:
return (n1.toString().charAt(0) == n2.toString().charAt(0));
Вам нужно будет использовать Integer, а не int, поскольку у int нет метода .toString ().
Если n1 является целым числом, вы можете использовать новое целое число (n1) .toString ().
Или даже лучше (предложено Bombe):
String.valueOf(n1).charAt(0) == String.valueOf(n2).charAt(0)
Другие советы
Повторяйте деление на десять, пока все деление не станет меньше десяти, тогда это число будет первым, и вы сможете сравнивать числа.
Вы можете вычислить первую цифру:
public int getFirstDigit(int number) {
while (number >= 10) {
number /= 10;
}
return number;
}
(Это будет работать только для положительных чисел.)
Но опять же, вы можете просто сравнить первый символ представлений String. Сравнение строк может быть медленнее, но поскольку ваша проблема & # 8220, получение первого символа строкового представления & # 8221; это может быть просто подходящим решением. :) Р>
Наиболее простой подход (допускающий различные значения длины), вероятно, будет таким, как вы сказали, преобразовать их оба в строки.
int x = 5643;
int y = 5377;
String sx, sy;
sx = "" + x; // Converts int 5643 to String "5643"
sy = "" + y;
boolean match = (sx.charAt(0) == sy.charAt(0));
public static byte firstDigit(int number) {
while (true) {
int temp = number / 10;
if (temp == 0) {
return (byte) Math.abs(number);
}
number = temp;
}
(int) (a / 10 ** (int) Math.log10 (a))
Вероятно, менее эффективен, чем строковое решение, но без зацикливания, и это удерживает нас в "!" Числовом &. область.
(Всегда помните, что когда вы говорите о количестве цифр в номере, log10 - ваш друг)
Также не будет работать для отрицательных чисел - сначала возьмите абсолютное значение.
Для целых, int n1 и int n2;
return ("" + n1).charAt(0) == ("" + n2).charAt(0);