检索数字的第一个数字

我只是在学习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; }