【问题标题】:Java: Finding how many times string occurred in a sentence WITHOUT using APIJava:在不使用 API 的情况下查找一个句子中出现了多少次字符串
【发布时间】:2018-03-12 21:09:50
【问题描述】:

我应该在不使用 API 的情况下找出单词在句子的给定行中出现的次数,除了 .charAt。任何帮助都会很棒!谢谢

输入示例:

我的狗很可爱

每只狗都会经过另一只狗,狗会向另一只狗吠叫

他们很可爱

一个词的例子:

最终输出:第 1 行 1,第 2 行 2,第 3 行 4,第 4 行 0。

我能够通过检查第一个字母来获得 howManyTimes 输出,但我不知道如何检查所有字符是否与单词相同。

public void calculation(String input, String word, int count)
{
    howManyTimes=0;
    line = count + "";
    int counter = 0;
    for(int i = 0; i < input.length() - word.length(); i++)
    {
        for(int j = 0; j < word.length(); j++)
        {
            if(word.charAt(j) == input.charAt(i+j))
            {
                counter++;
                if(word.length()==counter)
                {
                    howManyTimes++;
                }
            }
        }
    }
}

【问题讨论】:

标签: java charat


【解决方案1】:

你快到了:

  1. 条件 input.length() - word.length() 失去一只狗(在行尾)
  2. 您必须小心定义单词的方式(您的示例没有分隔单词,“dodog”将包含单个“dog”单词。
  3. 请将您的计数器归零 - 或在循环内声明如下:

更正的代码:

public int calculation(String input, String word)
{
      int howManyTimes = 0;
      for(int i = 0; i < input.length() - word.length() + 1; i++)
      {
          int counter = 0;         
          for(int j = 0; j < word.length() && word.charAt(j) == input.charAt(i+j); j++)
          {
              counter++;
          }
          if (word.length() == counter) {
              howManyTimes++;
          }
      }
      return howManyTimes;
}

【讨论】:

  • 谢谢!我在嵌套的 for 循环中尝试了许多不同的逻辑,但似乎 +1 是唯一的问题。
猜你喜欢
  • 2017-04-28
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
相关资源
最近更新 更多