Сравнение числа Java - PullRequest
       17

Сравнение числа Java

0 голосов
/ 16 марта 2009

Есть ли что-то, что я могу использовать, чтобы узнать, начинается ли число с той же цифры, что и другая? Ex. 5643 и 5377 оба начинаются с пяти.

Есть ли способ сделать это с помощью чисел или они должны быть строками? (StartsWith?)

Ответы [ 7 ]

7 голосов
/ 16 марта 2009

Ich n1 и n2 - ваши номера:

return (n1.toString().charAt(0) == n2.toString().charAt(0));

Вы должны будете использовать Integer, а не int, поскольку int не имеет метода .toString ().

Если n1 является целым числом, вы можете использовать новое целое число (n1) .toString ().

Или даже лучше (предложено Бомбе):

String.valueOf(n1).charAt(0) == String.valueOf(n2).charAt(0)
1 голос
/ 16 марта 2009

(int) (a / 10 ** (int) Math.log10 (a))

Возможно, менее эффективно, чем строковое решение, но без зацикливания, и оно удерживает нас в "числовом" мире.

(Всегда помните, что когда вы говорите о количестве цифр в номере, log10 - ваш друг)

Также не будет работать для отрицательных чисел - возьмите абсолютное значение первого.

1 голос
/ 16 марта 2009
  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

      if (temp == 0) {
        return (byte) Math.abs(number);
      }

      number = temp;
    }
1 голос
/ 16 марта 2009

Самый простой подход (допускающий различные значения длины), вероятно, будет таким же, как вы сказали, преобразовать их оба в строки.

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));
1 голос
/ 16 марта 2009

Вы можете вычислить первую цифру:

public int getFirstDigit(int number) {
    while (number >= 10) {
        number /= 10;
    }
    return number;
}

(Это будет работать только для положительных чисел.)

Но опять же, вы можете просто сравнить первый символ представлений String. Сравнение строк может быть медленнее, но поскольку ваша проблема заключается в «получении первого символа строкового представления», это может быть просто подходящим решением. :)

1 голос
/ 16 марта 2009

Повторяйте деление на десять, пока все деление не станет меньше десяти, тогда это число будет первым, и вы сможете сравнивать числа.

0 голосов
/ 17 марта 2009

Для целых чисел, int n1 и int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
...