java-一道Java题目,请大虾们帮帮忙,谢谢了

问题描述

一道Java题目,请大虾们帮帮忙,谢谢了

用Java编写一个程序,对于输入的一段英语文本,可以统计:
1、该文本中有多少英语单词;
2、该文本中有多少不同的英语单词。
如,输入 I am a good student. I am in Zhengzhou.
则可以统计出有9个英语单词、7个不同的英语单词。

解决方案

首先,需要对输入信息进行处理,去掉输入的标点符号,并以空格替换,需要用正则表达式,进行全部替换;
其次,就是对输入单词进行统计,使用字符串的分割函数split(" "),以空格分割;
最后,就是遍历分割结果,进行统计,用Map,以单词为key,出现次数为value。
实例代码如下:

 import java.util.HashMap;
import java.util.Map;

public class Tee {
    /**
     * 正则去除所有的英文标点符号
     */
    public static String formatInput(String input) {
        if (input == null) {
            return null;
        }

        return input.replaceAll("[.|;|\?]", " ");
    }

    public static Map<String, Integer> countWords(String input) {
        Map<String, Integer> result = new HashMap<String, Integer>();
        if (input == null || input.length() == 0) {
            return result;
        }
        // 用字符串的分割函数
        String[] split = input.split(" ");
        if (split == null || split.length == 0) {
            return result;
        }

        // 统计存入Map,word为key,出现次数为value
        for (String value : split) {
            if (result.containsKey(value)) {
                // 出现过,直接累计+1
                result.put(value, result.get(value) + 1);
            } else {
                // 没出现过存入
                result.put(value, 1);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        String value = "I am a good student.I am in Zhengzhou.Ha?";
        String format = formatInput(value);
        System.out.println(format);
        Map<String, Integer> r = countWords(format);
        System.out.println(r.toString());
    }
}

解决方案二:

http://www.zybang.com/question/a4b9597b12af739c8bf72d92e9c569fa.html
至于相同的单词,可以放在Map中汇总下。

时间: 2024-08-31 05:41:42

java-一道Java题目,请大虾们帮帮忙,谢谢了的相关文章

一道java题目,请大虾们帮帮忙,我是个新手,谢谢

问题描述 一道java题目,请大虾们帮帮忙,我是个新手,谢谢 编写一个程序,对于输入的一段程序,可以获取该程序的单词符号.单词符号的类别有基本字.标识符.常数.算符和界符.关键字为基本字,由字母组成,如int.for和while:变量名和函数名为标识符,由字母和数字构成,如fun1和age:固定不变的数值为常数,如12.13.86和25e8(科学计数法):算符如+.-.*./ .%.&&:界符如 {.[.(. :和:等. 如, public?static?void?main (String

java发送邮件时出现“554 5.1.0 Sender Denied&amp;amp;quot;请大神帮帮忙

问题描述 java发送邮件时出现"554 5.1.0 Sender Denied"请大神帮帮忙 用的邮箱不是QQ 邮箱 ,是自己公司的邮箱. javax.mail.MessagingException: 554 5.1.0 Sender Denied at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020) at com.sun.mail.smtp.SMTPTransport.mailFrom(SM

遍历-Java字符串问题,求大神帮帮忙

问题描述 Java字符串问题,求大神帮帮忙 请用Java写这个程序,思考题: I am a student ! 定义一个方法: !student a am I 我有思路,但是我实现代码有困难,我的思路是:先将原字符串转换为字符数组,然后从头遍历,判断某个字符是否为空,一旦为空,将前面的存放到list集合中.然后继续从下一个开始遍历,然后判断是否为空,不为空继续向下遍历,然后继续遍历到为空的那个字符,然后继续将不为空的作为一个整体存入list集合中,往复循环进行,直至全部不为空的字符个数全部进入l

java双线程冒泡排序 帮帮忙谢谢了!

问题描述 要求先输入几个数字,然后使用两个线程,一个做升序排列,另一个做降序排列怎么写啊?那位大大能帮帮忙谢谢了! 解决方案 解决方案二:线程同步

myeclipse tomcat6.0在运行程序时报错,错误如下,请大神帮帮忙

问题描述 myeclipse tomcat6.0在运行程序时报错,错误如下,请大神帮帮忙 HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: javax.se

android-贴一段代码,关于自动接听的,请老司机帮帮忙

问题描述 贴一段代码,关于自动接听的,请老司机帮帮忙 public synchronized void answerRingingCall(Context context) { try { Log.e("try to answer", "below 2.3"); //ITelephony itelephony = getITelephony(mTelephonyManager); Method method = Class.forName("android

数据-Oracle 权限问题请给位帮帮忙,在线等

问题描述 Oracle 权限问题请给位帮帮忙,在线等 1.oracle 新建了一个用户,怎样赋权限 让这个用户只能对自己用户下的数据操作(包括视图,function等等) 2.expdp语句导出是导出的整个库么? 还是用户下的所有内容 ? (注:用户的权限是DBA)

SQL Server2008r2 sqlexpress服务无法打开 请各位帮帮忙 谢谢!

问题描述 SQL Server2008r2 sqlexpress服务无法打开 请各位帮帮忙 谢谢! 下面是出错的日志文件 2016-05-15 10:03:21.91 Server Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Express Edition on Windows NT 6.1

wcf-同样的WCF服务程序,使用不同的宿主,效果不一样,请大神帮帮忙,谢谢

问题描述 同样的WCF服务程序,使用不同的宿主,效果不一样,请大神帮帮忙,谢谢 1C //契约的实现using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace TickService{ public class TickService:ITicketService { //Tick tick = Tick.tick