为什么我的 Java 代码在另一个字符串中查找多次出现的 Sting 不起作用?

问题描述 投票:0回答:0

我尝试编写一段Java代码来检查另一个字符串中是否多次出现某个子字符串,因此如果某个子字符串在一个字符串中出现多次,该方法应该返回true,否则应该返回false 。当子字符串根本不存在于字符串中时,它工作得很好,但当子字符串存在但没有出现多次(这是不应该发生的)时,它返回 true。方法如下:

public boolean twoOccurrencesMethod(String a, String b){
    int fromIndex = 0;
    int count = 0;
    int Index = b.indexOf(a, fromIndex);
    
    while((Index) != -1){
      count++;
      fromIndex = Index + 1;
      
      if (count > 1){
        return true; 
      }
    }
    return false;
  }

当子字符串在字符串中出现多次时,我希望该方法返回 false。 但经过一些修改,我得到了下面的方法,效果非常好。

public boolean twoOccurrencesMethod(String a, String b){
    int fromIndex = 0;
    int count = 0;
    int Index;
    
    while((Index = b.indexOf(a, fromIndex)) != -1){
      count++;
      fromIndex = Index + 1;
      
      if (count > 1){
        return true; 
      }
    }
    return false;
  }

为什么在 while 循环的条件下初始化 Index 变量会起作用,而不是像第一种方法那样在 while 循环之前初始化它?

java
© www.soinside.com 2019 - 2024. All rights reserved.