2017-10-21 191 views
0

我已經通過Google的一些解決方案的幫助編寫了代碼。你能幫我詳細瞭解while循環的細節嗎?字符串和子字符串以及子字符串在主字符串中的存在次數

import java.util.Scanner; 

public class TwoStringsWordRepeat { 
    public static void main(String[] args) { 
     Scanner s = new Scanner (System.in); 
     System.out.print("Enter Sentence: "); 
     String sentence = s.nextLine(); 
     System.out.print("Enter word: "); 
     String word = s.nextLine(); 
     int lastIndex = 0; 
     int count = 0; 
     while (lastIndex != -1) { 
      lastIndex = sentence.indexOf(word, lastIndex); 
      if (lastIndex != -1) { 
       count++; 
       lastIndex += word.length(); 
      } 
     } 
     System.out.println(count); 
    } 
} 

向我解釋while循環中的代碼.indexOf();

+0

indexOf()根據在urs的代碼塊中使用的變量,在'sentence'中找到'word'的第一個匹配項,在'lastIndex'位置開始搜索。 – Adarsh

回答

0

sentence.indexOf(word,lastIndex);最後發現次數結束返回字符串word的索引,從指定的索引lastIndex開始。否則將返回-1

它將搜索在給定的sentenceword給出lastIndex

開始添加在代碼中的註釋。

// While we are getting the word in the sentence 
// i.e while it is not returning -1 
while(lastIndex != -1) { 
    // Will get the last index of the searched word 
    lastIndex = sentence.indexOf(word, lastIndex); 

    // Will check whether word found or not 
    if(lastIndex != -1) { 
     // If found will increment the word count 
     count++; 
     // Increment the lastIndex by the word lenght 
     lastIndex += word.length(); 
    } 
} 

// Print the count 
System.out.println(count); 
0

indexOf()返回給定子字符串在搜索字符串中第一次出現的偏移量,如果找不到各自的字符串,則返回-1

使用替代語法,可以在給定的偏移量處開始搜索,因此它只會在該特定的起始偏移量之後找到匹配項。

如果word已經找到,那麼它會做另一次迭代,但開始檢索算法權在word