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