我正在学习Java,并且正在尝试让我的程序检索数字的第一个数字 - 例如543应该返回5,等等。我想转换为字符串,但我不知道如何转换回来了?谢谢你的帮助。
int number = 534;
String numberString = Integer.toString(number);
char firstLetterChar = numberString.charAt(0);
int firstDigit = ????
答案 0 :(得分:29)
几乎肯定比使用字符串更有效:
int firstDigit(int x) {
while (x > 9) {
x /= 10;
}
return x;
}
(仅适用于非负整数。)
答案 1 :(得分:24)
int number = 534;
int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
答案 2 :(得分:18)
firstDigit = number/((int)(pow(10,(int)log(number))));
这应该使用数学而不是字符串来获得你的第一个数字。
在您的示例中,log(543)= 2.73,其中转换为int为2。 pow(10,2)= 100 543/100 = 5.43但是由于它是一个int,它会被截断为5
答案 3 :(得分:3)
JWTAuth::attempt(array $credentials = [], array $customClaims = [])
java中的(/)运算符在不考虑提醒的情况下划分数字,所以当我们将534除以100时,它给出了我们(5)。
但如果您想获取最后一个号码,可以使用(%)运算符
int number = 534;
int firstDigit = number/100;
它提醒我们划分,所以534%10,将产生数字4。
答案 4 :(得分:1)
int number = 534;
String numberString = "" + number;
char firstLetterchar = numberString.charAt(0);
int firstDigit = Integer.parseInt("" + firstLetterChar);
答案 5 :(得分:0)
Integer.parseInt
将获取一个字符串并返回一个int。
答案 6 :(得分:0)
int firstDigit = Integer.parseInt(Character.toString(firstLetterChar));
答案 7 :(得分:0)
此示例适用于任何双精度数,而不仅仅是正整数,并考虑负数或小于一的数。例如,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 + "");
}
要获得第一个数字,这会使用字符串操作,因为它更容易阅读。
答案 8 :(得分:0)
如果您不想使用str方法
,这种方式可能更有意义protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
DataTable dt = new DataTable();
dt = bl.Get_detailsbydate(bo);
string dates = dt.Rows[0]["EventDate"].ToString();// Confirm if you EventDate is in a same format to calendar
if (e.Day.Date == dates)
{
e.Day.IsSelectable = false;
e.Cell.BackColor = System.Drawing.Color.Red;
}
}