统计脏话的程序怎么写?

livehighhh 2014-11-13 04:28:01

这个是我写的,感觉写不下去了。。。
求救~!!

public class JIadiChangA4Q3 {
public static int countWarOccurrences(String sentense, String word){
int num=0;
for(int index=0;index<sentense.length();index=sentense.indexOf(word,0)+1){
if (sentense.indexOf(word,0)!=-1){
num++;


}

}
return num;
}
public static double getSwearDollarAmount(String sentense, String badword,double badcost){
int count=countWarOccurrences(sentense,badword);
if ()
badcost=badcost*count;

return badcost;
}


}


...全文
242 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_23311579 2014-11-15
  • 打赏
  • 举报
回复
先建立字典庫再對比?
猿人林克 2014-11-15
  • 打赏
  • 举报
回复
如果只判断单个词的话,修改count方法,例如:fuck you fucking,这一句按照上面代码是2个fuck,想要只认为第一个fuck才满足第二个不算的话,代码如下:
public static int count(String text, String sub) {
		int count = 0, start = 0, last = 0;
		System.out.println(sub);
		while ((start = text.indexOf(sub, start)) >= 0) {
			last = start + sub.length();
			if ((start == 0 || ' ' == text.charAt(start - 1))
					&& (last == text.length() || ' ' == text.charAt(last))) {
				count++;
			}
			start += sub.length();
		}
		System.out.println("===count===" + count);
		return count;
	}
猿人林克 2014-11-15
  • 打赏
  • 举报
回复
接上一楼,输入: Cannofuckt slut overri fuckde crud'dealloc' which bleed has bleedbeen marked bleed unavailable fuck 结果: 一共要付:6.0元 楼主自己试一下吧。
猿人林克 2014-11-15
  • 打赏
  • 举报
回复
直接上代码了,有注释,自己看吧,不懂回复我,希望给分
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class talkTest {

	// 脏话罚款集合
	public static Map<String, Double> wordMaps = new HashMap<String, Double>() {
		{
			put("slut", 0.5);
			put("bleed", 0.75);
			put("crud", 0.25);
			put("fuck", 1.0);
		}
	};

	/**
	 * 开始说话
	 *
	 */
	public static void startTalk() {
		// 输入内容,并获取输入的一行的值
		String inputContent = new Scanner(System.in).nextLine();
		Double money = 0.0;
		// 循环4中类型的脏话,然后算出对应的钱
		for (String key : wordMaps.keySet()) {
			money += count(inputContent, key) * wordMaps.get(key);
		}
		System.out.println("一共要付:" + money + "元");
	}

	/**
	 * sub在text中出现了多少次,这个方法比较多样 我得逻辑: 通过indexOf找sub这个字符串在text中从第0个字符开始第一次出现的位置;
	 * 若有该字符串,则从第一次出现sub的位置在开始第一次出现的位置;依此类推直到sub找不到为止停止循环
	 * 
	 * @param text
	 * @param sub
	 * @return
	 */
	public static int count(String text, String sub) {
		int count = 0, start = 0;
		while ((start = text.indexOf(sub, start)) >= 0) {
			start += sub.length();
			count++;
		}
		return count;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		startTalk();
	}

}
livehighhh 2014-11-14
  • 打赏
  • 举报
回复
能具体说一下吗
livehighhh 2014-11-14
  • 打赏
  • 举报
回复
引用 2 楼 suciver 的回复:
把脏话的词语或词组放入一个字典集合中可以使map,一句话里面去找只要存在于map里面的就可以计算了
看过了,看不懂
livehighhh 2014-11-14
  • 打赏
  • 举报
回复
引用 2 楼 suciver 的回复:
把脏话的词语或词组放入一个字典集合中可以使map,一句话里面去找只要存在于map里面的就可以计算了
我不会用map。。没学过
热爱Coding 2014-11-13
  • 打赏
  • 举报
回复
一个词一个词判断
suciver 2014-11-13
  • 打赏
  • 举报
回复
把脏话的词语或词组放入一个字典集合中可以使map,一句话里面去找只要存在于map里面的就可以计算了
tony4geek 2014-11-13
  • 打赏
  • 举报
回复
参考你上一个帖子里面别人回复的。

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧