代码运行不正常 - 单词中间

时间:2013-03-17 15:08:52

标签: java

我正在编写代码以查看给定字符串中间是否存在xyz。这可以在xyz出现一次时有效,但是当它出现不止一次时,它将不会一直有效。

public boolean xyzMiddle(String str) {
  if (str.length() <= 2) {
    return false;
  }
  int count1 = 0;
  int count2 = 0;
  for (int i=(str.length()-2)/2; i<str.length()-2; i++) {
    if (str.substring(i, i+3).equals("xyz")) {
      count1 = str.substring(0, i).length();
      count2 = str.substring(i+3).length();
    }
  }
  if (count1 == count2 || count1+1 == count2 || count2+1 == count1) {
    return true;
  }
  return false;
}

3 个答案:

答案 0 :(得分:1)

这将有效:

int middle = (str.length() - 2) / 2;
return "xyz".equals(str.substring(middle, middle + 3));

如果str的长度为偶数,则xyz之前的字母可能会比之后多一个字母。如果你想要它而不是之前,你必须减去三个而不是两个。如果你想完全禁止这一点,首先需要if检查字符串的长度。

答案 1 :(得分:0)

第1步:查看Java SE 6 api docs 第2步:阅读String上的条目 第3步:尝试这个:String.split(&#34; xyz&#34;);

答案 2 :(得分:0)

你的方法过于复杂......你应该使用String.split(“xyz”),然后检查返回数组的大小,如果是2,检查两个部分是否相等:

public boolean xyzMiddle(String str) {
  String[] temp = str.split("xyz");
  return temp.length == 2 ? temp[0].length == temp[1].length : false;
}