Вопрос

Есть ли что-то, что я могу использовать, чтобы узнать, начинается ли число с той же цифры, что и другая? 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top