【问题标题】:What does the percentage symbol (%) mean? [duplicate]百分比符号 (%) 是什么意思? [复制]
【发布时间】:2018-01-28 00:02:27
【问题描述】:

我在数组参数中遇到了一些包含% 符号的代码。

这是什么意思,它是如何工作的?

示例:

String[] name = { "a", "b", "c", "d" };

System.out.println(name[4 % name.length]);
System.out.println(name[7 % name.length]);
System.out.println(name[50 % name.length]);

输出:

a
d
c

【问题讨论】:

  • 那是模运算符。它计算整数除法的余数
  • @meowgoesthedog:Remainder,不是模数。如果它是模数,它将以不同的方式处理负数。

标签: java


【解决方案1】:

这是remainder operator,它给出整数除法的余数。例如,3 % 21,因为 3 / 2 的其余部分是 1

它被用于将值保持在范围内:如果 name.length 小于 4、7 或 50,则 % name.length 对这些值的结果是在 0 到 @987654330 范围内的值@。

这样代码可以可靠地从数组中挑选条目,即使数字(4、7 或 50)超出范围也是如此。 4 % 407 % 4350 % 42。所有这些都是name 的有效数组索引。

完整示例 (live copy):

class Example
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String[] name = { "a" , "b" , "c" , "d"};
        int n;
        n = 4 % name.length;
        System.out.println(" 4 % 4 is " + n + ": " + name[n]);
        n = 7 % name.length;
        System.out.println(" 7 % 4 is " + n + ": " + name[n]);
        n = 50 % name.length;
        System.out.println("50 % 4 is " + n + ": " + name[n]);
    }
}

输出:

4 % 4 为 0: 7 % 4 为 3:d 50 % 4 是 2: c

【讨论】:

  • 也就是说,它不会抛出任何错误,但结果不会像预期的那样,对吧?
  • @TheAlpha:取决于预期的结果。 :-) 使用% 将值保持在范围内是非常常见的,如果您希望将值保持在范围内,它会给出预期的结果。您通常会在要循环的索引中看到它:index = (index + 1) % size
  • @Mr.Blue:很高兴有帮助。顺便说一句,引用中的4750 周围的() 没有任何作用。一般来说,围绕一个单个值的分组运算符(())没有任何作用。
【解决方案2】:

简单:这是 modulo,或者准确地说是 remainder 运算符。

这与数组本身无关。它只是用于计算数组索引的值的数值计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多