检索数字的第一个数字
我只是在学习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))));
这应该使用数学而不是字符串来获得您的第一个数字。
在您的示例中,log(543)= 2.73,其中转换为int为2. pow(10,2)= 100 543/100 = 5.43但是因为它是一个int,所以它被截断为5
int number = 534; int firstDigit = number/100;
(/)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);
Integer.parseInt
将获取一个字符串并返回一个int。
int firstDigit = Integer.parseInt(Character.toString(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 + ""); }
要获得第一个数字,这将使用字符串操作,因为它更容易阅读。
如果您不想使用str方法,这种方式可能更有意义
int first = 1; for (int i = 10; i < number; i *= 10) { first = number / i; }