代数方法的长度()

时间:2015-02-24 07:53:58

标签: java math

让我们说一个长度为5的String对象:

ABCDE

和方法定义:

public int returnIndex(int n)
{
}

当参数中传递的值为negative并且计数backwards(它应该环绕)时,如何返回String的正确索引?如果提到的String的长度是5并且传递的值是-7,那么它应该返回索引为3的D。我尝试了Math.abs,但它没有正确计数。请问,请让我走上正轨?

3 个答案:

答案 0 :(得分:0)

你需要使用Math.abs来使数字为正数,然后你需要在数字上使用模数函数来取走字符串的长度。

请参阅下面的代码。

public static int returnIndex(int n)
{
    String a = "ABCDE";
    n = Math.abs(n) % a.length();
    return a.length() - n;
}

这样做是需要数字,删除否定符号,在除去字符串长度和n后找到余数,并返回字符串长度减去n的值。

这似乎是你想要的。

正如我在原评论中所说的那样。

不是一个java问题,更像是一个数学问题。

答案 1 :(得分:0)

模(%)运算符负责大部分"环绕"问题,虽然你仍然需要对负数进行一些调整:

public int returnIndex(int n) {
    String s = "ABCDE";
    int length = s.length();
    int result = n % length;
    if (result < 0) {
        result += length;
    }
    return result;
} 

答案 2 :(得分:0)

如果您使用的是Java 8,则可以使用Math.floorMod(int x, int y)方法 这种方法可以绕过作业,甚至可以用于负数。

所以你的代码是:

public int returnIndex(int n) {
        String s = "ABCDE";
        return Math.floorMod(n, s.length());
}