Java 为什么此程序上的循环超时?

Java 为什么此程序上的循环超时?,java,string,loops,indexof,Java,String,Loops,Indexof,对于某些字符串,它可以正常工作,但由于某些原因,它对最后三个字符串不起作用。我认为输入的字符串类型没有区别,我希望indx的计算结果为-1,但由于某些原因,最后三个字符串上没有。我不明白为什么。 编辑:问题解决了。正如你们所说,我在循环中使用str的子字符串而不是news。抱歉犯了这么简单的错误,伙计们,我刚刚开始编写代码,这些是我需要注意的细节。此外,由于我在codingbat网站内工作,因此没有调试器,但我还想向其他初学者强烈推荐该网站。它将为您提供许多示例问题来开始编码。再次感谢。 代码:

对于某些字符串,它可以正常工作,但由于某些原因,它对最后三个字符串不起作用。我认为输入的字符串类型没有区别,我希望indx的计算结果为-1,但由于某些原因,最后三个字符串上没有。我不明白为什么。 编辑:问题解决了。正如你们所说,我在循环中使用str的子字符串而不是news。抱歉犯了这么简单的错误,伙计们,我刚刚开始编写代码,这些是我需要注意的细节。此外,由于我在codingbat网站内工作,因此没有调试器,但我还想向其他初学者强烈推荐该网站。它将为您提供许多示例问题来开始编码。再次感谢。 代码:


因为循环从不中断

您正在从循环中的
str
索引
news
获取子字符串


您可能希望从
新闻
中获取子字符串和索引

请将代码作为文本而不是图像发布。请在此处添加所有相关代码,而不是链接到图像。因此,用户不必访问外部站点就可以回答您的问题。您使用的是原始的
str
值,而不是修改的
news
值,因此如果有多个
yak
,它将永远运行。如果您调试了代码,这很容易被注意到,因此:
public String stringYak(String str) {
  int indx = str.indexOf("yak");
  String news =str;
    for(;indx!=-1;)
    {
      news = (str.substring(0,indx) + str.substring(indx+3,str.length()));
      indx = news.indexOf("yak");

    }
    return news;

}