我想要一个像这样的命令:
setstat <statname> <level>
但是,我的'statname是在一个数组中;我需要输出数组编号。 这是我正在使用的代码:
String[] statname = {"att", "def", "str", "hp",
"ranged", "pray", "magic", "cooking",
"wc", "fletch", "fish", "fm",
"craft", "smith", "mining", "herb",
"agil", "thieving", "slayer", "farming", "rc"};
int statid = statname.contains(arg[1]);
然而,它不起作用(对我而言)。看作contains(...)
与String[]
数组不兼容。
我不知道使用哪种方法,或者如何处理它。
答案 0 :(得分:0)
使用Arrays.asList(statname).indexOf(arg[1]);
查找项目的索引。
答案 1 :(得分:0)
由于您的数组未订购,此功能将起作用:
public int getFoundIndex(String[] stringArr_toSearch, String str_toFind)
for(int i = 0; i < stringArr_toSearch.length; i++) {
if(stringArr_toSearch[i].equals(str_toFind)) {
return i;
}
}
return -1;
}
用
调用它int foundIdx = getFoundIndex(statName, "str");
答案 2 :(得分:0)
这是一个线性搜索的简洁代码,如果找到该元素,则返回数组中元素的索引,否则返回false。
public int search(String[] array, String element)
{
if(array == null || element == null)
return -1;
for(int i = 0; i < array.length; i++)
{
if(array[i].equals(element))
return i;
}
return -1;
}
如果您需要花费大量时间搜索元素,使用这种方法:Arrays.asList(statname).indexOf(arg[1);
可能会变得昂贵。
如果必须多次搜索statname
数组中的元素,您可以对数组进行一次排序,然后进行二进制搜索,以实现更快的查找时间。