Java,生成文本

标签 java string hashtable stringbuffer

我的程序的一部分有问题。在下面的代码中,27 是我们字母表中的字母数量; list_extend是一个Hashtable(StringBuffer,Integer)类型的对象,包含文本中长度为n+1的所有字符串及其出现次数; list_extended 构建正确,因为我已经控制了这部分。目的是:对于外部 for 的每次重复,我们取生成文本的最后 n 个字符,并且对于字母表中的每个字母,我们计算通过将该字符添加到最后一个字符而获得的 n+1 个字符在 list_extended 中出现的次数text_ generated 的 n 个字符;然后我们选择出现次数最多的字母。我得到的结果是出现的次数全部包含0,为什么?代码

        int index;
        int[] occurrences = new int[27];
        StringBuffer curr_word;
        for(int x = 0; x < m; x++){   // m is the number of characters the user wants to add
            curr_word = new StringBuffer(text_generated.substring(x, x+n)); // n is an integer entered previously, initially text_generated is formed by n characters
            for(int j = 0; j < 27; j++){
                if(list_extended.get(curr_word.append(array[j]))==null)
                    occurrences[j] = 0;
                else
                    occurrences[j] =(int) list_extended.get(curr_word.append(array[j]));
            }
            index = 0;
            for(int j = 1; j < 27; j++){
                if(occurrences[j] > occurrences[index])
                    index = j;
            }   
            text_generated = text_generated.append(array[index]);
        }
                    System.out.println("The text generatd is \n" + text_generated.toString());

最佳答案

因为你创建了新的对象curr_word,但是你没有把它放入list_extended,所以每次你检查

if(list_extended.get(curr_word.append(array[j]))==null)

将为null

出现次数[j]将为0

关于Java,生成文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354457/

相关文章:

python - 字符串数组数据需要去掉美元符号并转换为 float

java - tomcat 8 为所有 400 级响应返回 404

java - Java 数组是类实例吗?

java - 警告 EclipseJavaCompiler 使用不受支持的 java 版本 '11' ,假设在 Java 11 上运行 AEM 6.5 时最新支持的版本 '9'

r - 用 R 删除反向重复项

javascript - HTML5 地理位置 url 中的纬度/经度

powershell - 在 powershell 中对哈希表中的多个值进行排序

c - 在哈希表中插入一个节点

database - 您将如何在数据库模式中表示哈希表集合?

java - 为什么我会收到 ClassNotFoundException?