比方說,有長度爲5的字符串對象:代數方法長度()
ABCDE
和方法的定義:
public int returnIndex(int n)
{
}
我怎樣才能返回字符串時的正確索引傳遞給參數的值是negative
並且計數backwards
(它應該環繞)?如果所提到的字符串的長度是5並且傳遞值是-7,所以它應該返回索引爲3的D
。我嘗試了Math.abs,但它沒有正確計數。請問請讓我走在正確的軌道上?
比方說,有長度爲5的字符串對象:代數方法長度()
ABCDE
和方法的定義:
public int returnIndex(int n)
{
}
我怎樣才能返回字符串時的正確索引傳遞給參數的值是negative
並且計數backwards
(它應該環繞)?如果所提到的字符串的長度是5並且傳遞值是-7,所以它應該返回索引爲3的D
。我嘗試了Math.abs,但它沒有正確計數。請問請讓我走在正確的軌道上?
您需要同時使用兩個Math.abs才能使數字成爲正數,然後您需要使用數字上的模函數來消除字符串的長度。
看到我的代碼如下。
public static int returnIndex(int n)
{
String a = "ABCDE";
n = Math.abs(n) % a.length();
return a.length() - n;
}
這樣做是需要的數量,消除了負的符號,將所述串和n和返回字符串的長度減去n的值的長度後發現的餘數。
這似乎是你想要的。
正如我在我原來的評論中所說的。
不是java的問題,更是一個數學問題。
當您將'2'作爲參數傳遞時,這不起作用。 – codeMan 2015-02-24 08:13:21
爲什麼不呢?爲我返回B. – 2015-02-24 08:14:42
模數(%
)運營商需要照顧的大多數「環繞」的問題,但你仍舊需要爲負數一些調整:
public int returnIndex(int n) {
String s = "ABCDE";
int length = s.length();
int result = n % length;
if (result < 0) {
result += length;
}
return result;
}
如果您使用的是Java 8,你可以使用方法Math.floorMod(int x, int y)
。
這種方法可以打包工作,甚至可以用於負數。
所以,你的代碼是:
public int returnIndex(int n) {
String s = "ABCDE";
return Math.floorMod(n, s.length());
}
我不明白的要求。如果你「倒數」7個長度爲5的字符串,它就會溢出。或者你的意思是它應該環繞? – Mureinik 2015-02-24 07:57:28
頗有自命不凡的頭銜,不是嗎?所以Math.abs不能正確計數:怎麼樣? – Drux 2015-02-24 07:57:29
這聽起來更像是一個數學問題而不是JAva。我想我明白,雖然 – 2015-02-24 07:57:47