Pregunta

¿Hay algo que pueda usar para ver si un número comienza con el mismo dígito que otro? Ex. 5643 y 5377 comienzan con cinco.

¿Hay alguna manera de hacer esto con números o tienen que ser cadenas? (comienza con?)

¿Fue útil?

Solución

Ich n1 y n2 son sus números:

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

Tendrá que usar Integer no int, ya que int no tiene el método .toString ().

Si n1 es un int, podría usar un nuevo entero (n1) .toString ().

O incluso mejor (sugerido por Bombe):

String.valueOf(n1).charAt(0) == String.valueOf(n2).charAt(0)

Otros consejos

Repetir dividiendo por diez hasta que la división entera sea menor que diez, entonces ese número es el primero y puedes comparar números.

Puede calcular el primer dígito:

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

(Esto solo funcionará para números positivos).

Pero, de nuevo, podría comparar el primer carácter de las representaciones de cadenas. La comparación de cadenas puede ser más lenta, pero como su problema es & # 8220; obtener el primer carácter de la representación de cadena & # 8221; Podría ser la solución adecuada. :)

El enfoque más directo (que permite valores de longitud diferentes) probablemente sería tal como usted dijo, conviértalos a ambos en cadenas.

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))

Probablemente menos eficiente que la solución de cadena, pero sin bucles y nos mantiene en el "Numérico" reino.

(Recuerde siempre que cuando habla del número de dígitos en un número, log10 es su amigo)

Tampoco funcionará para números negativos: tome un valor absoluto de primero.

Para ints, int n1 e int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top