[英]How to create a simple indexOf() method of my own
我正在嘗試創建一個簡單的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。為什么會這樣,有沒有更好的方法來編寫此方法?
return i;
根據定義, listArray[i]
等於str
。
因為,無論何時運行,都return str.indexoOf(listArray[i]);
,您已經有str
等於listArray[i]
。 當然,您一直都在獲得0
,它等效於str.indexOf(str);
您真的不需要這樣做。 您已經在列表中找到了一個與給定字符串相等的元素,只需返回其位置即可:
return i;
您的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;
}
如果滿足if條件,則必須返回i(索引)。
public int indexOf(String str) {
for(int i = 0; i < listArray.length; i++) {
if(listArray[i].equals(str)) {
return i;
}
}
return -1;
}
我覺得你很困惑。 如果您想從ArrayList中找到一個字符串,並且已經在if(listArray[i].equals(str))
找到了該字符串,那么您所要做的就是返回已經找到的索引i。
for(int i=0;i<listArray.length;i++){
if(listArray[i].equals(str)){
return i;
}
}
就是答案。
永遠記住:如果您甚至發布listArray的內容或示例以及示例字符串以在其中查找...,這將有助於我們更好地了解您被卡在哪里了
您可以使用for循環執行此操作。
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.