【问题标题】:implementation of a algorithm increment integer digits in java [closed]在java中实现算法递增整数位[关闭]
【发布时间】:2012-02-03 08:27:41
【问题描述】:

我有一个 6 位整数。
如何增加每个单独的数字,使每个数字增加或减少 2?

例如“999999”到“111111”

我在想也许可以将数字分成几部分,然后将其连接回来。

【问题讨论】:

  • 如果您希望人们花时间回答您的问题,请花时间接受答案。 (点击最佳答案旁边的勾号。)
  • 好的,现在我正在尝试使用 % 运算符来实现它。
  • 我实际上不会称之为“转变”,因为它不是转变。无论如何,我最近遇到了在 Java 中将整数拆分为数字的问题,发现它很难完成

标签: java algorithm math integer


【解决方案1】:

可能是更有效的方法,但如果您只处理 6 位数字,则性能问题可以忽略不计。

迭代数字[在原始数字上使用 % 和 / 运算符],对于每个数字,计算其 +2 值 [使用 %10],并使用适当的指数将其添加到新数字中。

int x = 999999;
int $ = 0;
int exp = 0;
while (x > 0) { 
    int t = ((x % 10) +2) %10;
    $ += Math.pow(10, exp++) *t;
    x /= 10;
}
System.out.println($);

注意:如果数字在左侧隐含地包含零,它将中断 [i.e.如果 123 应转换为 222345]。您可以通过在 (exp < 6) 而不是 (x > 0) 时迭代来处理它

【讨论】:

    【解决方案2】:

    这并不是真正的数学运算或按位意义上的“移位”。这是一个字符串转换问题。我建议你:

    1. 将整数转成字符串
    2. 将字符串转成字符数组(十进制数字),
    3. 修改数组中的数字,
    4. 将数组转回字符串,然后
    5. 将字符串转成整数

    如果您的号码以字符串形式提供,您可以跳过第一步和最后一步。

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 2016-11-07
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2012-11-23
      • 2011-10-19
      相关资源
      最近更新 更多