Question

Est-ce que je peux utiliser quelque chose pour voir si un nombre commence par le même chiffre qu'un autre? Ex. 5643 et 5377 commencent tous deux par cinq.

Existe-t-il un moyen de faire cela avec des nombres ou doivent-ils être des chaînes? (commence avec?)

Était-ce utile?

La solution

Ich n1 et n2 sont vos numéros:

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

Vous devrez utiliser Integer not int, car int n'a pas de méthode .toString ().

Si n1 est un entier, vous pouvez utiliser nouvel Integer (n1) .toString ().

Ou même mieux (suggéré par Bombe):

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

Autres conseils

Si vous divisez par dix jusqu'à ce que la division soit inférieure à dix, alors ce nombre est le premier et vous pouvez comparer les chiffres.

Vous pouvez calculer le premier chiffre:

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

(Cela ne fonctionnera que pour les nombres positifs.)

Mais encore une fois, vous pouvez simplement comparer le premier caractère des représentations de chaîne. La comparaison des chaînes peut être plus lente, mais votre problème est d’obtenir le premier caractère de la représentation de la chaîne & # 8221; ce pourrait juste être la solution appropriée. :)

L'approche la plus simple (en tenant compte de différentes valeurs de longueur) serait probablement, comme vous l'avez dit, de convertir les deux en chaînes.

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

Probablement moins efficace que la solution chaîne, mais pas de boucle et cela nous maintient dans la zone "Numérique". royaume.

(N'oubliez jamais que lorsque vous parlez du nombre de chiffres d'un log, log10 est votre ami)

Ne fonctionnera pas non plus pour les nombres négatifs - prenez la valeur absolue d'une première.

Pour les entiers, int n1 et int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top