【问题标题】:# of times a single word in a sentence# 句子中单个单词的次数
【发布时间】:2011-04-03 23:15:23
【问题描述】:

如何获得给定句子中单个单词出现的次数。无法使用 String.split。我真的不需要代码。我只需要一个想法就可以开始..

package exam2;

import java.util.Arrays;

public class Problem2 {    
    /**
     * @param args
     */    
    public static String input, word, a, b, c;
    public static int index;

    public static void Input() {    
        System.out.println("Enter Sentence: ");
        input = IO.readString();

        System.out.println("Enter Word: ");
        word = IO.readString();    
    }

    public static void Calc() {    
        Input();    
        index = input.indexOf(word);    
        int[] data = new int[input.length()];    
        data[0] = index;

        while (index >= 0) {
            System.out.println("Index : " + index);
            for (int i = 1; i < data.length; i++) {
                data[i] = index;    
            }
            index = input.indexOf(word, index + word.length());    
        }

        int count = 0;
        for (int i = 0; i < data.length; i++) {    
            for (int j = 0; j < data.length; j++) {
                if (data[i] == data[j]) {    
                    a = input.substring(data[i], data[i] + word.length());    
                }    
                else if (data[i] != data[j]) {    
                    b = input.substring(data[i], data[i] + word.length());    
                    c = input.substring(data[j], data[j] + word.length());
                }    
            }    
        }
        if (a.equalsIgnoreCase(word)) {    
            count++;
        }    
        System.out.println(count);    
    }

    public static void main(String[] args) {
        Calc();  
    }    
}

使用 while 循环,我在用户再次给出的句子中找到用户给出的单词索引。我将这些索引存储在数组中。由于某种原因,它不起作用..所以我找到了另一种实现它的方法。如果该单词在数组中的索引彼此相等,则该单词仅退出一次。我已经让这个工作了..但是如果这个词不止一次出现,那就是造成问题..

【问题讨论】:

    标签: java string


    【解决方案1】:

    获取用户给出的单词的第一个字母。接下来查看句子并找到字母。然后检查单词的第二个字母并与句子中的下一个字母进行比较。如果相同,则继续比较。如果不是从下一个字母重新开始。每次你得到单词的所有字母,然后是一个空格,你就会在计数器上加 1。认为这会奏效。

    【讨论】:

      【解决方案2】:

      看看String.indexOf(String, int)。这会找到参数 String 的下一个位置,从参数 int 开始。

      【讨论】:

      • 我已经在上面的代码中使用了它,但仍然有一个我无法解决的问题
      【解决方案3】:

      拆分不能用?这似乎很奇怪。不过我会咬咬牙,简单地说我们没有足够的信息来给出正确的答案。

      1. 单词到底是什么?
      2. 应如何考虑符号/字母?
      3. 句子何时完成?
      4. 连字符应该是特殊的吗?
      5. 我们是否有 1 个句子并且我们正在测试很多单词?
      6. 我们有 1 个单词和多个句子吗?
      7. 子字符串匹配(can vs canteen)呢?

      根据我的猜测,您应该循环遍历通过构建“单词”来标记输入的“句子”,直到遇到单词边界。将找到的单词放入 HashMap(键入单词)并在找到每个单词时递增其值。

      【讨论】:

      • 1.一个词将是用户输入的任何词。我必须检查它是否是用户输入的句子以及输入了多少次.. 2. 只有字母没有符号。会有用户给出的正常句子和正常单词..
      • 我整理了一些东西,如果你能看到它并提供任何建议,我将不胜感激..
      【解决方案4】:

      您需要在循环中调用 'input.indexOf(word, fromIndex)' 来查找字符串。每次您调用此函数时,它都会返回 -1 以外的内容,增加您的计数。当它返回 -1 或到达字符串的末尾时停止。 fromIndex 将从 0 开始,每次找到字符串时都需要按字符串的长度递增。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 2013-01-29
        • 2014-02-03
        • 2021-04-13
        • 2012-01-06
        • 1970-01-01
        相关资源
        最近更新 更多