请编写程序,统计该文本中“Java“一词出现的次数。

现有如下文本:"Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的"。请编写程序,统计该文本中"Java"一词出现的次数。

自学java中.......

看到这个题目感觉不会做

琢磨了一下

不知道这样写对不对

思路:

循环判断 关键词 java一词是否存在

用indexOf方法获得关键词的第一个索引+关键词长度=需要删掉的关键词

用substring删除关键词并且把它覆盖到字符串上面去

然后统计修改了多少次

把次数返回到调用处

public static int strJava(String str1, String str2) {
        //定义统计变量
        int count = 0;
        //判断条件 字符串里存在 str2 变量记录的子串
        while (str1.indexOf(str2) != -1) {
            if (str1 == null) {
                break;
            }
                //找到关键词索引并且+上关键词索引的长度 得到需要剪掉的字符串长度
                int index = str1.indexOf(str2) + str2.length();
                // 把查找过的部分剪切掉,从找到的索引+子串长度的位置开始截取。
                str1 = str1.substring(index);
                count++;
        }
        return count;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个Java程序,可以从一个文本文件读取数据并统计每个单出现次数: ```java import java.io.BufferedReader; import java.io.FileReader; import java.util.HashMap; import java.util.Map; public class WordCount { public static void main(String[] args) { String fileName = "input.txt"; // 输入文件名 Map<String, Integer> wordCountMap = new HashMap<>(); // 用于存储每个单出现次数 try { BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line; while ((line = reader.readLine()) != null) { // 逐行读取数据 String[] words = line.split("\\s+"); // 将每行数据按空格分割成单数组 for (String word : words) { if (!wordCountMap.containsKey(word)) { wordCountMap.put(word, 1); // 如果单第一次出现,将其加入map,并将其出现次数设为1 } else { int count = wordCountMap.get(word); wordCountMap.put(word, count + 1); // 如果单已经出现过,将其出现次数加1 } } } reader.close(); } catch (Exception e) { e.printStackTrace(); } // 输出每个单出现次数 for (String word : wordCountMap.keySet()) { int count = wordCountMap.get(word); System.out.println(word + ": " + count); } } } ``` 在上述程序,我们首先定义了一个`wordCountMap`,用于存储每个单出现次数。然后,我们使用`BufferedReader`类从指定的文件逐行读取数据,并将每行数据按空格分割成单数组。接着,我们遍历每个单,如果它是第一次出现,则将其加入`wordCountMap`,并将其出现次数设为1;否则,我们从`wordCountMap`取出该单出现次数,并将其加1。最后,我们遍历`wordCountMap`,输出每个单出现次数。 需要注意的是,在本程序,我们使用了正则表达式`\s+`将每行数据按空格分割成单数组。这里的`\s`表示任意的空白字符,包括空格、制表符、换行符等。`\s+`表示一个或多个空白字符。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值