【问题标题】:Counting integer digits计算整数位
【发布时间】:2021-11-10 14:24:32
【问题描述】:

我正在尝试用 java 计算整数的位数,它应该给出 4 但我得到 1 。 我不知道我是否做错了什么,如果有人可以帮忙。 这是代码:

public static void main(String[] args) {
        int n = 4781, i = 0;
        while (n != 0) {
            n %= 10;
            n /= 10;
            i++;
        }
        System.out.println(i);
    }

【问题讨论】:

  • 你觉得n %= 10在这里做什么?
  • 在您的 while 循环中添加 System.out.println(n); 以找出问题所在。
  • 你用 %10 覆盖 n 并将结果除以 10。此外,对 0 的循环检查在这里有点过于乐观。您可以除以 10 并检查 while (n <= 0)

标签: java math integer


【解决方案1】:

n %= 10 是不必要的,实际上是问题的根源。如果您删除它,代码将起作用。

通常,当您执行这些“为每个数字做某事”时,您会使用% 10 来查找当前数字,有点像这样:

int digit = n % 10;
System.out.println("The current digit is " + digit);

但在你的情况下,你实际上并不关心数字是多少,你只关心有多少,所以根本不需要% 10

而你这样做的方式是用当前数字覆盖n(应该保持数字的当前状态),然后然后除以10。所以不管第一个是什么digit 是,这将永远不会返回大于 1 的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 2018-09-02
    • 2013-01-28
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多