2014-09-04 36 views
-1

我想有這樣的代碼能夠找到一個以上的X和輸出它作爲LOCATION1,LOCATION2,.......多於一個索引

即輸入:xuyx 我將有它輸出0,3

import java.util.Scanner; 

public class findinline { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    String str; 

    str = input.nextLine(); 
    int pos = str.indexOf("x"); 

    if (pos < 0){ 
    System.out.println("No X Detected"); 
    } 
    else{ 
     System.out.println(pos); 
    } 






    } 
} 
+0

可能的重複[Java - 字符串中所有出現字符的索引](http://stackoverflow.com/questions/5034442/java-indexes-of-all -occurrences-的字符-IN-A-字符串) – EvenPrime 2014-09-04 20:22:10

回答

2

字符串的方法indexOf(String str, int fromIndex)http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

所以才增加的起始索引到哪裏找到的最後一個。

String xStr = "xuyx"; 

int index = xStr.indexOf("x", 0); 
while(index >= 0) 
{ 
    System.out.println(index); 
    index = xStr.indexOf("x", index + 1); 
} 

或更好,但...

public List<Integer> getIndexesOfStr(String fullStr, String strToFind){ 
    ArrayList<Integer> listOfIndexes = new ArrayList<>(); 

    int index = fullStr.indexOf(strToFind, 0); 
    while(index >= 0) 
    { 
    listOfIndexes.add(index); 
    index = fullStr.indexOf(strToFind, index + strToFind.length()); 
    } 
    return listOfIndexes; 
} 
0

你可以不喜歡這樣。遍歷這些字符並打印出您點擊x的索引。

boolean any = false; 
for (int pos = 0; pos < str.length(); ++pos) { 
    if (str.charAt(pos)=='x') { 
     if (any) { 
      System.out.print(','); 
     } 
     any = true; 
     System.out.print(pos); 
    } 
} 
if (!any) { 
    System.out.println("No x found"); 
} else { 
    System.out.println(); 
} 

請記住,如果您還想檢測大寫字母X,則必須修復此案例。或者,正如kingdamian42所說,你可以使用indexOf(txt, fromindex)