Frage

Gibt es etwas, das ich verwenden kann, um zu sehen, ob eine Zahl mit derselben Ziffer wie ein anderes beginnt? Ex. 5643 und 5377 beginnen beide mit fünf.

Gibt es eine Möglichkeit, dies mit Zahlen zu tun, oder müssen sie Strings sein? (Starts?)

War es hilfreich?

Lösung

Ich n1 und n2 sind Ihre Zahlen:

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

Sie haben Integer verwenden nicht int, da int keine .toString () -Methode hat.

Wenn n1 eine int Sie new Integer (n1) verwenden könnte .toString ().

Oder noch besser (vorgeschlagen von Bombe):

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

Andere Tipps

Recurse durch zehn dividiert, bis die ganze Division weniger als zehn ist, dann wird diese Zahl die erste ist und Sie können Zahlen vergleichen.

Sie können die erste Ziffer berechnen:

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

(Dies wird nur für positive Zahlen arbeiten.)

Aber dann wieder konnte man vergleichen nur das erste Zeichen der String-Darstellungen. Der String-Vergleich kann langsamer sein, aber wie Ihr Problem ist „das erste Zeichen der String-Darstellung immer“ es könnte nur die geeignete Lösung sein. :)

Die Straight-Forward-Ansatz (für unterschiedliche Längenwerte erlaubt) wahrscheinlich genauso dazu wie Sie gesagt haben, konvertieren wäre sowohl auf 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))

Wahrscheinlich weniger effizient als die String-Lösung, aber kein Looping und es hält uns in dem „Numeric“ Reich.

(Denken Sie immer daran, dass, wenn Sie über die Anzahl der Ziffern in einer Reihe sprechen, log10 ist dein Freund)

wird auch nicht für negative Zahlen arbeiten Nehmen einen Absolutwert eines ersten.

Für Ints, int n1 und int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top