Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用位置打印包含图案的单词_Java_Loops_Search_Printing_Brute Force - Fatal编程技术网

Java 用位置打印包含图案的单词

Java 用位置打印包含图案的单词,java,loops,search,printing,brute-force,Java,Loops,Search,Printing,Brute Force,我试着用位置打印包含我们图案的单词。我尝试使用一个布尔变量来检查文本是否匹配,如果匹配,则打印,但它不起作用。如何打印带有位置的文本 如果字符串pat位于字符串文本中,则打印已找到的索引并打印包含字符串pat的单词。例如,est是内部测试,所以我们要打印单词testing 电流输出 Pattern found at index 20 Pattern found at index 49 Pattern found at index 89 想要产出 Pattern found at index 2

我试着用位置打印包含我们图案的单词。我尝试使用一个布尔变量来检查文本是否匹配,如果匹配,则打印,但它不起作用。如何打印带有位置的文本

如果字符串pat位于字符串文本中,则打印已找到的索引并打印包含字符串pat的单词。例如,est是内部测试,所以我们要打印单词testing

电流输出

Pattern found at index 20
Pattern found at index 49
Pattern found at index 89
想要产出

Pattern found at index 20 in-word testing
Pattern found at index 49 in-word test
Pattern found at index 89 in-word est's
公共类FindWord{
公共静态无效搜索(字符串txt、字符串pat)
{
int M=拍片长度();
int N=txt.length();
//布尔值=false;

对于(int i=0;i我不太理解您的问题:如果在字符串txt中找到索引和字符串pat,是否要打印它

if (j == M) {
    System.out.printf("Pattern found at index %d in-word %s%n", i, pat);
}
另外,您可以使用indexOf()方法来实现这个目标 { 字符串s=“”; 对于(int k=i;txt.charAt(k)!=''&&k>=0;k--)s=txt.charAt(k)+s; 对于(int k=i+1;txt.charAt(k)!=''&&k

类似于此,但您需要修改一些细节以使其无bug。

据我所知,您希望打印找到子字符串的整个单词。您可以通过搜索找到的字符串左右两侧的空格字符来提取该单词,如下所示:

if(j==M){
//正在搜索字符串左侧的空格
int leftSpace=i;
while(leftSpace>0&&txt.charAt(leftSpace)!=“”){
左空间--;
}
//搜索字符串右侧的空格
int rightSpace=i+j;
while(rightSpace
您可以使用
lastIndexOf
indexOf
来获取空格索引和单词

  if (j == M){
      int s = txt.lastIndexOf(' ', i) + 1;
      int e = txt.indexOf(' ', i);
      if(e == -1) e = N;
      System.out.println("Pattern found at index " + i +" "+ txt.substring(s, e));
  }
      

有几种方法可以做到这一点:1.使用txt.split(“”)要拆分txt中的字符串,并将每个字符串与pat进行比较,您需要使用计数器来跟踪索引;2.在上面的代码中,如果找到匹配项,请添加一个指针来记录输出单词的开头。为什么索引的输出不正确?索引将大于实际索引。@Jack for
e
使用c的独占方式所有的
子字符串
和这里的在线版本意味着准确的索引将是
(s,e-1)
if (j == M)
{
    String s = "";
    for(int k = i; txt.charAt(k) != ' ' && k >= 0; k--) s = txt.charAt(k) + s;
              
    for(int k = i + 1; txt.charAt(k) != ' ' && k < txt.length(); k++) s += txt.charAt(k);
              
    System.out.println("Pattern found at index " + i + ", " + s);
}
  if (j == M){
      int s = txt.lastIndexOf(' ', i) + 1;
      int e = txt.indexOf(' ', i);
      if(e == -1) e = N;
      System.out.println("Pattern found at index " + i +" "+ txt.substring(s, e));
  }