【问题标题】:Acquire the last three digits of an Int获取 Int 的最后三位
【发布时间】:2019-03-30 12:07:04
【问题描述】:

我正在尝试获取 int 的最后三位数字,其值可以是字符串或 int 格式中超过 999 的任何值。

例如,如果我收到 int 12345678,我会得到值 678。

目前我只能满足 4 位长的 int 的要求,例如 1899。

使用 String.valueOf(numberReceived).substring(1);

【问题讨论】:

  • 得到该数字除以 100 的余数:numberReceived % 1000
  • 假设你的字符串有 5 个字符,你应该将什么传递给子字符串?如果是 6 个字符呢?还有7?您没有看到字符数与传递给子字符串的值之间的非常简单的关系吗?和3号有关系吗?这是基本的算术,没什么花哨的。

标签: java integer int substring


【解决方案1】:

模 (%) 运算符可让您获得除法后的余数。在您的情况下,您需要最后三位数字,因此您需要使用 % 1000 来获得正确的余数。

例如,2500 / 1000 = 2。余数为 500。2500 % 1000 = 500

public static int lastThreeDigits(int i) {
    return i % 1000;
}

请务必注意,生成的 int 不一定是三位数。例如。 2039 会给你39 而不是039

为确保您有三位数,您需要将结果转换为字符串。例如。 String.format("%03d", i)

如果您的原始号码是String 格式并且您想要获取最后 3 个字符,您可以使用字符串操作而不是算术。例如,这是一个更通用的函数,用于从字符串末尾获取多个字符:

public static String lastNChars(int n, String s) {
    return s.substring(Math.max(0, s.length() - n));
}

根据你的需要,有很多不同的方式来编写它。

【讨论】:

    【解决方案2】:

    你可以在numberReceived中找到位数,并使用substring方法获取最后3位:

    String.valueOf(numberReceived).substring(String.valueOf(numberReceived).length()-3);
    

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2015-07-25
      • 2016-03-18
      相关资源
      最近更新 更多