web-dev-qa-db-ja.com

数字の最初の数字を取得する

私はただ学習していますJavaそして、プログラムに数字の最初の数字を取得させようとしています-例えば、543は5を返すはずです。私は文字列に変換することを考えましたが、どうすれば元に戻すことができるかわかりませんか?助けてくれてありがとう。

int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????
19
Michoel
    int number = 534;
    int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
25
Jordan Allan

文字列を使用するよりもほぼ確実に効率的です:

int firstDigit(int x) {
    while (x > 9) {
        x /= 10;
    }
    return x;
}

(負でない整数でのみ機能します。)

31
Sean
firstDigit = number/((int)(pow(10,(int)log(number))));

これは、文字列ではなく数学を使用して最初の数字を取得する必要があります。

あなたの例では、intにキャストされたlog(543)= 2.73は2です。pow(10、2)= 100 543/100 = 5.43ですが、intなので、5に切り捨てられます

19
Ben Burnett
int number = 534;
int firstDigit = number/100; 

(/)operator in Javaリマインダーを考慮せずに数値を除算するため、534を100で除算すると、(5)が得られます。

しかし、最後の数字を取得したい場合は、(%)演算子を使用できます

    int lastDigit = number%10; 

これにより、部門のリマインダーが得られるため、534%10が数値4を生成します。

4
Maysara Alhindi
int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);
1
Adam

この例は、正の整数だけでなく任意のdoubleで機能し、負の数または1未満の数を考慮します。たとえば、0.000053は5を返します。

private static int getMostSignificantDigit(double value) {
    value = Math.abs(value);
    if (value == 0) return 0;
    while (value < 1) value *= 10;
    char firstChar = String.valueOf(value).charAt(0);
    return Integer.parseInt(firstChar + "");
}

最初の数字を取得するために、これは文字列操作に固執しています。これは読みやすいためです。

0
Brian Risk

Integer.parseIntは文字列を取り、intを返します。

0
unholysampler
int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));
0
Adamski

Strメソッドを使用したくない場合、この方法はより理にかなっているかもしれません

int first = 1;
for (int i = 10; i < number; i *= 10) {
    first = number / i;
}
0
Harvey