私はただ学習していますJavaそして、プログラムに数字の最初の数字を取得させようとしています-例えば、543は5を返すはずです。私は文字列に変換することを考えましたが、どうすれば元に戻すことができるかわかりませんか?助けてくれてありがとう。
int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????
int number = 534;
int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
文字列を使用するよりもほぼ確実に効率的です:
int firstDigit(int x) {
while (x > 9) {
x /= 10;
}
return x;
}
(負でない整数でのみ機能します。)
firstDigit = number/((int)(pow(10,(int)log(number))));
これは、文字列ではなく数学を使用して最初の数字を取得する必要があります。
あなたの例では、intにキャストされたlog(543)= 2.73は2です。pow(10、2)= 100 543/100 = 5.43ですが、intなので、5に切り捨てられます
int number = 534;
int firstDigit = number/100;
(/)operator in Javaリマインダーを考慮せずに数値を除算するため、534を100で除算すると、(5)が得られます。
しかし、最後の数字を取得したい場合は、(%)演算子を使用できます
int lastDigit = number%10;
これにより、部門のリマインダーが得られるため、534%10が数値4を生成します。
int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);
この例は、正の整数だけでなく任意の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 + "");
}
最初の数字を取得するために、これは文字列操作に固執しています。これは読みやすいためです。
Integer.parseInt
は文字列を取り、intを返します。
int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));
Strメソッドを使用したくない場合、この方法はより理にかなっているかもしれません
int first = 1;
for (int i = 10; i < number; i *= 10) {
first = number / i;
}