質問

数字が別の数字と同じ数字で始まるかどうかを確認するために使用できるものはありますか? 例5643と5377は両方とも5から始まります。

数字でこれを行う方法はありますか、それとも文字列でなければなりませんか? (startsWith?)

役に立ちましたか?

解決

n1とn2はあなたの番号です:

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

intには.toString()メソッドがないため、intではなくIntegerを使用する必要があります。

n1がintの場合、new Integer(n1).toString()を使用できます。

またはさらに良い(Bombe提案):

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

他のヒント

全除算が10未満になるまで10で除算を繰り返すと、その数値が最初の数値になり、数値を比較できます。

最初の桁を計算できます:

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

(これは正の数でのみ機能します。)

しかし、この場合も、文字列表現の最初の文字を比較するだけで済みます。文字列の比較は遅くなる場合がありますが、問題は<!>#8220;文字列表現の最初の文字を取得することです<!>#8221;それは単に適切なソリューションかもしれません。 :)

最も簡単なアプローチ(異なる長さの値を許可する)は、おそらくあなたが言ったように、両方を文字列に変換するでしょう。

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

文字列ソリューションよりもおそらく効率的ではありませんが、ループは発生せず、<!> quot; Numeric <!> quot;レルム。

(数字の桁数について話すときは、log10が友達であることを常に覚えておいてください)

負の数に対しても機能しません。最初の絶対値を取ります。

intの場合、int n1およびint n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top