数字が別の数字と同じ数字で始まるかどうかを確認するために使用できるものはありますか? 元。5643 と 5377 はどちらも 5 から始まります。
数値でこれを行う方法はありますか、それとも文字列でなければなりませんか? (で始まる?)
数字が別の数字と同じ数字で始まるかどうかを確認するために使用できるものはありますか? 元。5643 と 5377 はどちらも 5 から始まります。
数値でこれを行う方法はありますか、それとも文字列でなければなりませんか? (で始まる?)
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)
public static byte firstDigit(int number) {
while (true) {
int temp = number / 10;
if (temp == 0) {
return (byte) Math.abs(number);
}
number = temp;
}
最初の桁を計算できます。
public int getFirstDigit(int number) {
while (number >= 10) {
number /= 10;
}
return number;
}
(これは正の数に対してのみ機能します。)
しかし、ここでも文字列表現の最初の文字を比較することができます。文字列の比較は遅くなる可能性がありますが、問題は「文字列表現の最初の文字を取得する」ことであるため、適切な解決策になる可能性があります。:)
最も簡単なアプローチ (異なる長さの値を許可する) は、おそらくあなたが言ったように、両方を文字列に変換することです。
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));
(int)(a / 10 ** (int)Math.log10(a))
おそらく文字列ソリューションよりも効率的ではありませんが、ループがなく、「数値」の領域にとどまります。
(数字の桁数について話しているときは、log10 が友達であることを常に覚えておいてください)
また、負の数に対しては機能しません。最初の絶対値を取ります。
除算全体が 10 未満になるまで 10 で割ることを繰り返します。その場合、その数が最初の数になり、数を比較できます。
int の場合、int n1 および int n2。
return ("" + n1).charAt(0) == ("" + n2).charAt(0);