0

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

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

4

7 に答える 7

7

Ich 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)
于 2009-03-16T18:08:53.200 に答える
1
  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

      if (temp == 0) {
        return (byte) Math.abs(number);
      }

      number = temp;
    }
于 2009-03-16T18:21:56.493 に答える
1

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

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

(これは正の数に対してのみ機能します。)

しかし、ここでも文字列表現の最初の文字を比較することができます。文字列の比較は遅くなる可能性がありますが、問題は「文字列表現の最初の文字を取得する」ことであるため、適切な解決策になる可能性があります。:)

于 2009-03-16T18:09:37.380 に答える
1

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

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));
于 2009-03-16T18:13:42.737 に答える
1

(int)(a / 10 ** (int)Math.log10(a))

おそらく文字列ソリューションよりも効率的ではありませんが、ループがなく、「数値」の領域にとどまります。

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

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

于 2009-03-16T20:20:37.860 に答える
1

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

于 2009-03-16T18:09:31.937 に答える
-1

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

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
于 2009-03-17T10:42:32.033 に答える