Pergunta

Existe algo que eu possa usar para ver se um número começa com o mesmo dígito como um outro? Ex. 5643 e 5377, tanto início com cinco.

Existe uma maneira de fazer isso com números ou eles tem que ser cordas? (StartsWith?)

Foi útil?

Solução

Ich N1 e N2 são os seus números:

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

Você terá que usar Integer não int, desde int não tem nenhum método .toString ().

Se n1 é um int você poderia usar new Integer (n1) .ToString ().

Ou melhor ainda (sugerido por Bombe):

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

Outras dicas

Recurse dividir por dez até que toda a divisão é inferior a dez, em seguida, esse número é o primeiro e você pode comparar números.

Você poderia calcular o primeiro dígito:

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

(Isto só irá funcionar para números positivos.)

Mas, novamente você poderia simplesmente comparar o primeiro caractere das representações de corda. A comparação de string pode ser mais lenta, mas como o problema está “ficando o primeiro caractere da representação string” que poderia ser apenas a solução adequada. :)

A abordagem mais direta (permitindo diferentes valores de comprimento) provavelmente seria exatamente como você disse, convertê-los tanto para Strings.

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

Provavelmente menos eficiente do que a solução de cordas, mas sem looping e nos mantém no reino "numérico".

(Sempre lembro que quando você está falando sobre o número de dígitos em um número, log10 é seu amigo)

Também não trabalho para negativos números de assumir um valor absoluto de um primeiro.

Para ints, int n1 e n2 int;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top