”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 案例研究:计算关键词

案例研究:计算关键词

发布于2024-07-31
浏览:898

Case Study: Counting Keywords

本节介绍一个计算 Java 源文件中关键字数量的应用程序。对于Java源文件中的每个单词,我们需要判断该单词是否是关键字。为了有效地处理这个问题,请将所有关键字存储在 HashSet 中,并使用 contains 方法来测试某个单词是否在关键字集中。下面的代码给出了这个程序。

package demo;
import java.util.*;
import java.io.*;

public class CountKeywords {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a Java source file: ");
        String filename = input.nextLine();

        File file = new File(filename);
        if(file.exists()) {
            try {
                System.out.println("The number of keywords in "   filename   " is "   countKeywords(file));
            } catch (Exception e) {
                System.out.println("An error occurred while counting keywords: "   e.getMessage());
            }
        } else {
            System.out.println("File "   filename   " does not exist");
        }
    }

    public static int countKeywords(File file) throws Exception {
        // Array of all Java keywords   true, false and null
        String[] keywordString = {"abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "for", "final", "finally", "float", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while", "true", "false", "null"};

        Set keywordSet = new HashSet(Arrays.asList(keywordString));
        int count = 0;

        Scanner input = new Scanner(file);

        while(input.hasNext()) {
            String word = input.next();
            if(keywordSet.contains(word))
                count  ;
        }

        return count;
    }

}

输入Java源文件:c:\Welcome.java
c:\Welcome.java中的关键字数量为5

输入Java源文件:c:\TTT.java
文件 c:\TTT.java 不存在

程序提示用户输入 Java 源文件名(第 9 行)并读取文件名(第 10 行)。如果文件存在,则调用 countKeywords 方法统计文件中的关键字(第 15 行)。

countKeywords 方法为关键字创建一个字符串数组(第 26 行),并根据该数组创建一个哈希集(第 28 行)。然后它从文件中读取每个单词并测试该单词是否在集合中(第 35 行)。如果是,程序将计数加 1(第 36 行)。

您可以重写程序以使用LinkedHashSetTreeSetArrayListLinkedList来存储关键字。然而,使用 HashSet 对于这个程序来说是最有效的。

版本声明 本文转载于:https://dev.to/paulike/case-study-counting-keywords-4kfa?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在映射到MySQL枚举列时,如何确保冬眠保留值?
    在映射到MySQL枚举列时,如何确保冬眠保留值?
    在hibernate中保存枚举值:故障排除错误的列type ,他们各自的映射至关重要。在Java中使用枚举类型时,至关重要的是,建立冬眠的方式如何映射到基础数据库。在您的情况下,您已将MySQL列定义为枚举,并在Java中创建了相应的枚举代码。但是,您遇到以下错误:“ MyApp中的错误列类型。...
    编程 发布于2025-02-06
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    在这里工作/},false); 不幸的是,答案是否。除非在Creation中存储对处理程序的引用。要解决此问题,请考虑将事件处理程序存储在中心位置,例如页面的主要对象,请考虑将事件处理程序存储在中心位置,否则无法清理匿名事件处理程序。 。这允许在需要时轻松迭代和清洁处理程序。
    编程 发布于2025-02-06
  • 如何从PHP中的UTF-8字符中提取UCS-2代码点?
    如何从PHP中的UTF-8字符中提取UCS-2代码点?
    [2对于给定的UTF-8字符串中的字符。为此,可以定义自定义的PHP函数。首先,了解UTF-8编码方案很重要。每个字符由1到4个字节的序列表示,具体取决于其Unicode代码点。每个字节大小的范围如下: 0xxxxx:1 byte 110xxxxxxxxxx:2 bytes 11110:4字节字...
    编程 发布于2025-02-06
  • 如何正确管理Firebase ValueEventListeners以优化应用程序性能?
    如何正确管理Firebase ValueEventListeners以优化应用程序性能?
    在firebase 在单独的线程上运行firebase valueeventlistener,从而引发了有关线程管理的关注点。为了确保有效的资源利用,应根据应用程序的生命周期进行适当时删除valueEventListeners。何时删除valueEventListeners 作为一般规则,您应在一...
    编程 发布于2025-02-06
  • 在Windows上运行Python脚本时,如何隐藏控制台窗口?
    在Windows上运行Python脚本时,如何隐藏控制台窗口?
    在python 在Python中编写IRC机器人时会出现这样的方案,在该机器人的功能中应在没有可见的控制器的情况下运行。为此,您可以使用以下简单但有效的技术:解决方案,您可以通过使用一个用一个脚本保存python脚本来抑制控制台窗口“ .pyw”扩展。示例此模式打开控制台窗口,允许访问程序的输出和...
    编程 发布于2025-02-06
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式界面中实现垂直滚动元素的CSS高度限制 考虑一个布局,其中我们具有与可滚动的映射div一起移动的subollable map div用户的垂直滚动,同时保持其与固定侧边栏的对齐方式。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 可以限制地图的滚动,我们可以利用CSS...
    编程 发布于2025-02-06
  • 为什么我的JSON输出中的键顺序与使用'json.dumps”的Python字典中的顺序不同?
    为什么我的JSON输出中的键顺序与使用'json.dumps”的Python字典中的顺序不同?
    [2 。但是,您注意到每个字典中的键顺序尚未预期。具体来说,您需要按键以“ id”,“ name”和“ timezone”的顺序出现。您可以使用“ sort_keys” parameter of of “ json.dumps”对输出JSON中的键进行分类。例如:导入JSON contuct.app...
    编程 发布于2025-02-06
  • 如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    如何使用char_length()在mySQL中按字符串长度对数据进行排序?
    [2使用内置的char_length()function。 char_length()和length() 此查询将从指定的表中检索所有行,并基于上升顺序对它们进行排序指定列的字符长度。带有更长字符串的行将出现在结果的底部。
    编程 发布于2025-02-06
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    使用(1)而不是(;;)会导致无限循环的性能差异? 现代编译器,(1)和(;;)之间没有性能差异。 是如何实现这些循环的技术分析在编译器中: perl: S-> 7 8 unstack v-> 4 -e语法ok 在GCC中,两者都循环到相同的汇编代码中,如下所示:。 globl t_时 t_时...
    编程 发布于2025-02-06
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php 您的目标可能是检索“ varnum”属性值,其中提取数据的传统方法可能会使您感到困惑。 - > attributes()为$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ at...
    编程 发布于2025-02-06
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python 导入编解码器 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有表情符号 emoji_pattern = re.compile(“ [”...
    编程 发布于2025-02-06
  • 如何使用代理身份验证创建GO HTTP客户端?
    如何使用代理身份验证创建GO HTTP客户端?
    在使用Authentication 时,使用authentication时要求。当将代理支持集成到现有的第三方代码中时,这可能会构成挑战。在这种情况下,另一种方法是使用所需的代理配置创建自定义的HTTP客户端。然后,可以在第三方软件包中使用此客户端来代替默认的HTTP客户端。以下是如何使用http...
    编程 发布于2025-02-06
  • 如何使用Python的记录模块实现自定义处理?
    如何使用Python的记录模块实现自定义处理?
    使用Python的Loggging Module 确保正确处理和登录对于疑虑和维护的稳定性至关重要Python应用程序。尽管手动捕获和记录异常是一种可行的方法,但它可能乏味且容易出错。解决此问题,Python允许您覆盖默认的异常处理机制,并将其重定向为登录模块。这提供了一种方便而系统的方法来捕获和...
    编程 发布于2025-02-06
  • 如何在没有404个错误的情况下使用泽西2.0提供静态资源(例如index.html)?
    如何在没有404个错误的情况下使用泽西2.0提供静态资源(例如index.html)?
    在泽西岛估算静态资源的404错误映射拦截所有传入的请求,没有留出空间的网络容器来提供静态内容。为了解决此问题,我们深入探究了过滤器的领域,尤其是com.sun.jersey.spi.container.servlet.servlet.servlet.servletcontainer for Jer...
    编程 发布于2025-02-06
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样?使用openssl?答案:可以使用mcrypt数据加密数据,可以使用openssl。关于如何使用openssl对McRypt进行加密的数据: openssl_decrypt...
    编程 发布于2025-02-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3