【问题标题】:returning the first digit of an integer in an array返回数组中整数的第一个数字
【发布时间】:2014-10-31 13:29:17
【问题描述】:

我有一个方法,我很想知道它是如何工作的。我已经搜索了互联网,但无济于事。此方法在使用时将输入的整数的第一个数字返回到数组中。

让我感到困惑的是除法 AND 运算符。我知道运算符将左侧的操作数与右侧的运算符相除,并将答案应用于左侧。

方法如下:

public static int firstDigit(int index) 
{
    while (index > 9)
        index /= 10;
    return (index);

}

在我的程序中,当输入一个整数时,比如 100,它会读出数字 1,作为输入整数的第一个数字。

这个答案不应该是 10,因为 index = 100 /= 10 = 10?

对不起,如果我做错了,我是新手,在编程方面,我在问这个问题之前做了相当多的研究。

【问题讨论】:

标签: java arrays operators


【解决方案1】:

这个答案不应该是 10,因为 index = 100 /= 10 = 10?

没有。 10 大于 9,所以它再除一次。

这里的关键部分是while 循环。在上面的函数中,它是不带括号的,但可以重写为

public static int firstDigit(int index) 
{
    while (index > 9) 
    {
        index /= 10;
    }
    return (index);
}

我不打算详细解释什么是while循环,但它基本上重复了while条件为真的过程。

所以在 100 的情况下,它会这样做:
“指数超过9吗?”是的。将索引设置为 index/10。 (索引现在等于 10)。 “指数超过9吗?”是的。将索引设置为 index/10。 (索引现在等于 1)。 “指数超过9吗?”没有。返回索引。 (1).

在 99 的情况下,它是这样做的:
“指数超过9吗?”是的。将索引设置为 index/10。 (索引现在等于 9.9,四舍五入到 9)。 “指数超过9吗?”没有。返回索引。 (9)。

【讨论】:

  • 感谢您的帮助!我完全浏览了while循环。以后我会记住的。
【解决方案2】:

假设输入为 100:

你从index = 100开始

然后index = index / 10 = 10

因为10 > 9,你再除以10

index = index / 10 = 1

然后你退出循环并返回1

基本上,此方法的作用是计算index / 10^(n-1),其中 n 是位数。这会为您提供最重要的数字。

【讨论】:

    【解决方案3】:

    其中带有while 的行表示下一行(进行除法的行)重复发生,直到剩下的数字小于十。所以 100 除以 10 得到 10,然后 10 除以 10 得到 1,然后返回。

    【讨论】:

      【解决方案4】:

      这个答案不应该是 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。

      【讨论】:

        猜你喜欢
        • 2011-01-04
        • 2018-02-10
        • 1970-01-01
        • 2020-10-13
        • 2016-07-10
        • 2015-05-31
        • 2011-11-05
        • 1970-01-01
        • 2021-10-04
        相关资源
        最近更新 更多