【问题标题】:why does the loop on this program time out? [closed]为什么这个程序的循环超时? [关闭]
【发布时间】:2018-08-07 00:14:17
【问题描述】:

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

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;

}

【问题讨论】:

  • 请将代码发布为文本,而不是图像。
  • 请在此处添加所有相关代码,而不是链接到图像。 SO 用户无需访问外部网站即可回答您的问题。
  • 您正在对原始str 值进行子串化,而不是修改后的news 值,因此如果有多个yak,它将永远运行。如果您对代码进行了调试,这很容易引起注意,因此:idownvotedbecau.se/nodebugging

标签: java string loops indexof


【解决方案1】:

因为循环永远不会中断。

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

您可能想从news 获取子字符串和索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2021-03-20
    • 2023-01-17
    • 2021-10-10
    • 2013-04-19
    • 2015-02-12
    • 2014-02-01
    相关资源
    最近更新 更多