【问题标题】:how do you count the number of digits in an int?你如何计算int中的位数?
【发布时间】:2017-02-14 19:47:30
【问题描述】:

我一直在努力尝试找出一种方法来计算 2 的数量或您想要找出一种方法来计算 2 的数量并在 int 中打印 2 的数量。

如果我输入一个随机数,例如 3552342343 我在寻找 3,我希望它打印 4,因为它们是 4 个 3。

【问题讨论】:

  • 不清楚你在问什么。您列出的代码无法编译,因此我们无法推测运行时错误是什么。请发布一个完整的问题并详细说明您收到的错误。

标签: java


【解决方案1】:

您可以使用 split 查找所有匹配项

String number = "128";
String digit = "2";
// expensive but simple.
int matches = number.split(digit).length - 1;

假设你想使用循环和包含之类的东西。

// no objects
char digit = '2';
int count = 0;
for (int pos = number.indexOf(digit); pos >= 0; pos = number.indexOf(digit, pos + 1)
     count++;

这会更快,但不是那么简单。

正如@Kon 建议的那样,您可以遍历字符

char digit = '2';
for (char ch : number.toCharArray()) // creates an object
    if (ch == digit)
        count++;

// no objects
char digit = '2';
for (int i = 0; i < number.length(); i++)
    if (number.charAt(i) == digit)
        count++;

String 有一些有趣的运行时优化,我怀疑第二种方法最快,但您必须对其进行测试才能检查。

【讨论】:

  • 我喜欢这种方法有多懒惰,但它有点矫枉过正,对吧?遍历字符串的 char[] 表示的字符并查找 '2' 或任何其他整数,必须更快且更易于理解。
  • 谢谢你,这正是我要你的答案。
  • 如果数字是负数怎么办?
  • @nasukkin 这是一个字符串搜索,所以存在什么其他字符并不重要。
猜你喜欢
  • 2011-03-04
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 2021-01-09
  • 1970-01-01
相关资源
最近更新 更多