我有一个方法,我很想知道它是如何工作的。我搜索过互联网,但无济于事。使用此方法时,将输入的整数的第一个数字返回到数组中。
令我困惑的是除法运算符。我知道操作员将左侧的操作数与右侧的操作符分开,并将答案应用到左侧。
以下是方法:
public static int firstDigit(int index)
{
while (index > 9)
index /= 10;
return (index);
}
在我输入整数的程序中,比如100,它读出数字1,作为输入整数的第一个数字。
这个答案不应该是10,因为index = 100 / = 10 = 10?
很抱歉,如果我做错了,我是新来的,在编程方面,在我提出这个问题之前,我做了大量的研究。
答案 0 :(得分:1)
这个答案不应该是10,因为index = 100 / = 10 = 10?
没有。 10超过9,所以再划分它。
这里的关键部分是while
循环。在上面的函数中,它没有括号,但可以重写为
public static int firstDigit(int index)
{
while (index > 9)
{
index /= 10;
}
return (index);
}
我不打算详细解释while循环是什么,但它基本上重复了过程,而条件为真。
所以在100的情况下,它是这样做的:
"指数是否超过9?"是。将索引设置为index / 10。 (指数现在等于10)。 "指数是否超过9?"是。将索引设置为index / 10。 (索引现在等于1)。 "指数是否超过9?"编号返回索引。 (1)。
在99的情况下,它这样做:
"指数是否超过9?"是。将索引设置为index / 10。 (索引现在等于9.9,将其舍入为9)。 "指数是否超过9?"编号返回索引。 (9)。
答案 1 :(得分:0)
假设输入为100:
您从index = 100
然后index = index / 10 = 10
从10 > 9
开始,再次除以10
:
index = index / 10 = 1
然后退出循环并返回1
。
基本上,此方法的作用是计算index / 10^(n-1)
,其中n是位数。这为您提供了最重要的数字。
答案 2 :(得分:0)
其中包含while
的行表示以下行(进行除法的行)重复发生,直到左边的数字小于10。所以将100除以10得到10,然后将10除以10得到1,然后返回。
答案 3 :(得分:0)
这个答案不应该是10,因为index = 100 / = 10 = 10?
不,不应该。 为什么?由于 while循环
while (index > 9)
在第一次迭代中,index
以100
的形式进入循环,并将其修改为100/10 = 10
。
然后,评估条件index > 9
。由于它是true
(10 > 9
),程序将继续下一次迭代。因此,index
已修改为10/10 = 1
。
再次评估条件index > 9
,但这次它是false
(1 > 9
),因此程序退出循环并且返回的最后一个值index
,1。