我试图创建一个简单的indexOf()
方法,该方法返回一个int值,并识别字符串数组的字符串(而不是char)。
public int indexOf(String str) {
/*Getting and return the index of the first
*occurrence of the specified String. Return
*-1 if string not in the list
*/
for(int i = 0; i < listArray.length; i++) {
if(listArray[i].equals(str)) {
return str.indexOf(listArray[i]);
}
}
return -1;
}
我在Java中使用indexOf()
方法进行第一次返回,但它总是返回0.为什么这样,是否有更好的方法来编写此方法?
答案 0 :(得分:1)
return i;
,{p> listArray[i]
等于str
。
答案 1 :(得分:1)
因为,无论何时运行return str.indexoOf(listArray[i]);
,您已经str
等于listArray[i]
。当然,您始终获得0
,它等同于str.indexOf(str);
你真的不需要这样做。您已经在列表中找到了一个等于给定字符串的元素,只返回它的位置:
return i;
答案 2 :(得分:1)
你的for循环很好,问题是当你找到它时,你将返回字符串本身的索引,并且它总是为0。
例如,“hello”位于字符串“hello”的位置0。
你应该像这样返回i
:
public int indexOf(String str) {
/* Getting and return the index of the first
* occurrence of the specified String. Return
* -1 if string not in the list
*/
for (int i = 0; i < listArray.length; i++) {
if (listArray[i].equals(str)) {
// If we get here, it means that the item for position `i` is equal to `str`.
return i; // just return `i`
}
}
return -1;
}
答案 3 :(得分:0)
满足if条件时,必须返回i(索引)。
public int indexOf(String str) {
for(int i = 0; i < listArray.length; i++) {
if(listArray[i].equals(str)) {
return i;
}
}
return -1;
}
答案 4 :(得分:0)
我觉得你很困惑。如果你想从ArrayList中找到一个字符串,如果你已经在if(listArray[i].equals(str))
找到了字符串,那么你所要做的只是返回你已经找到它的索引i。
for(int i=0;i<listArray.length;i++){
if(listArray[i].equals(str)){
return i;
}
}
就是答案。
永远记住:如果您发布listArray和示例字符串的内容或样本以便在其中找到...这将有助于我们更好地了解您的确切位置
答案 5 :(得分:0)
您可以使用for循环执行此操作。
答案 6 :(得分:0)
public int indexOf(String iparam){
String astring = "" //YOUR OWN STRING
boolean astat = false;
List<Integer> alist = null;
for(int i=0; i<astring.toCharArray().length; i++){
alist = new ArrayList<>();
for(int j=0; j<iparam.toCharArray().length; j++){
try{
if(astring.toCharArray()[i+j] == iparam.toCharArray()[j]){
alist.add(i+j);
}else{
break;
}
}catch(Exception ex){
ex.printStackTrace();
break;
}
}
if(alist.size() == iparam.toCharArray().length){
astat = true;
break;
}
}
if(astat){
return alist.get(0);
}else{
return -1;
}
}