让我们说一个长度为5的String对象:
ABCDE
和方法定义:
public int returnIndex(int n)
{
}
当参数中传递的值为negative
并且计数backwards
(它应该环绕)时,如何返回String的正确索引?如果提到的String的长度是5并且传递的值是-7,那么它应该返回索引为3的D
。我尝试了Math.abs,但它没有正确计数。请问,请让我走上正轨?
答案 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());
}