JAVA求救!设计一个类能读取一个外部文件.txt,并能统计文件中单词test出现次数

sobvow 2008-12-23 09:01:33
设计一个类,能够读取一个外部文件javaread.txt,并能够统计文件中单词test的出现次数
...全文
1399 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
ladofwind 2008-12-24
  • 打赏
  • 举报
回复
忒懒了LZ
ccc_moriya 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ccc_moriya 的回复:]
个人做法,仅供参考



Java code

import java.io.*;
import java.util.*;
import java.util.regex.*;
public class Find
{
public void read()
{
String s1="(T|t)est";
String s2="[^a-z]";
int i=0;
try{
BufferedReader br=new BufferedReader(new FileReader("D:/work/tt.txt"));
while(br.read()!=-1)
{

[/Quote]

全部大写字母的TEST没考虑到呢。。
ccc_moriya 2008-12-23
  • 打赏
  • 举报
回复
个人做法,仅供参考




import java.io.*;
import java.util.*;
import java.util.regex.*;
public class Find
{
public void read()
{
String s1="(T|t)est";
String s2="[^a-z]";
int i=0;
try{
BufferedReader br=new BufferedReader(new FileReader("D:/work/tt.txt"));
while(br.read()!=-1)
{
String []sto=br.readLine().split(s2);
for(String e:sto)
{
if(e.matches(s1))
i++;
}
}
}catch(Exception e){}
System.out.println(i);
}

public static void main(String []args)
{
new Find().read();
}
}


gao5528 2008-12-23
  • 打赏
  • 举报
回复
程序员在深圳java群 4247660 欢迎高手的加入
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UserTreeMap {

public static void main(String args[]) throws IOException {

BufferedReader buf = new BufferedReader(new FileReader("english.txt"));
System.out.println("Read under this dir English.txt");
StringBuffer sbuf = new StringBuffer();// 缓冲字符串
String line = null;
while ((line = buf.readLine()) != null) {
sbuf.append(line);// 追加到缓冲字符串中
}
buf.close();// 读取结束
Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
String string1 = sbuf.toString().toLowerCase();// 转换成小写
Matcher matcher = expression.matcher(string1);
TreeMap myTreeMap = new TreeMap();// 创建树映射 存放键/值对
int n = 0;// 文章中单词总数
Object word = null;// 文章中的单词
Object num = null;// 出现的次数
while (matcher.find()) {// 是否匹配单词
word = matcher.group();// 得到一个单词-树映射的键
n++;// 单词数加1
if (word.toString().equalsIgnoreCase("test")) {
if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
num = myTreeMap.get(word);// 得到单词出现的次数
Integer count = (Integer) num;// 强制转化
myTreeMap.put(word, new Integer(count.intValue() + 1));
} else {
myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
}
}
}
System.out.println("统计分析如下:");
System.out.println("t 文章中单词总数" + n + "个");
System.out.println("具体的信息在当前目录的result.txt文件中");
BufferedWriter bufw = new BufferedWriter(new FileWriter("result.txt"));
Iterator iter = myTreeMap.keySet().iterator();// 得到树映射键集合的迭代器
Object key = null;
while (iter.hasNext()) {// 使用迭代器遍历树映射的键
key = iter.next();
bufw.write((String) key + ":" + myTreeMap.get(key));// 键/值写到文件中
bufw.newLine();
}
bufw.write("english.txt中的单词总数" + n + "个");
bufw.newLine();
bufw.write("english.txt中不同单词" + myTreeMap.size() + "个");
bufw.close();
}
}
sobvow 2008-12-23
  • 打赏
  • 举报
回复
读取javaread.txt
1import java.util.*;
2import java.util.regex.*;
3import java.io.*;
4public class UserTreeMap{
5public static void main(String args[]) throws IOException{
6BufferedReader buf=new BufferedReader(new FileReader("javaread.txt"));
7System.out.println("Read under this dir English.txt");
8StringBuffer sbuf=new StringBuffer();//缓冲字符串
9String line=null;
10while((line=buf.readLine())!=null){
11sbuf.append(line);//追加到缓冲字符串中}
12buf.close();//读取结束

统计文件中单词test的出现次数
13if (word.toString().equalsIgnoreCase("test")) {
14if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
15num = myTreeMap.get(word);// 得到单词出现的次数
16Integer count = (Integer) num;// 强制转化
17myTreeMap.put(word, new Integer(count.intValue() + 1));
18} else {
29myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中}}


程序整体是这样写的吗?完整不啊?

问题:设计一个类,能够读取一个外部文件javaread.txt,并能够统计文件中单词test的出现次数

大家帮忙完整下,谢谢了
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jcyan 的回复:]
9、10楼都可以,看着用吧
[/Quote]

看我11楼的回复,split是不会区分单词的,如果包含text就满足,别跟着起哄
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hy0231 的回复:]
public static void main(String[] args)
{
String ss = "Hi,I am want test the test";
String[] arr = ss.split("test");
System.out.println(arr.length);
}
[/Quote]

不能单纯的split,wtest gtext 你去试试!

再说,如果就是Text结尾还好,如果不是text结尾,那么arr.length就是一个错误,别误导
jcyan 2008-12-23
  • 打赏
  • 举报
回复
9、10楼都可以,看着用吧
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
if (word.toString().equalsIgnoreCase("test")) {
if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
num = myTreeMap.get(word);// 得到单词出现的次数
Integer count = (Integer) num;// 强制转化
myTreeMap.put(word, new Integer(count.intValue() + 1));
} else {
myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
}
}

你封装一下不就行了吗? 判断是不是Test
hy0231 2008-12-23
  • 打赏
  • 举报
回复
public static void main(String[] args)
{
String ss = "Hi,I am want test the test";
String[] arr = ss.split("test");
System.out.println(arr.length);
}
sobvow 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jcyan 的回复:]
你是要读所有的单词还是仅仅test这个单词?区别很大的
[/Quote]

仅仅TEST这个单词出现的次数
jcyan 2008-12-23
  • 打赏
  • 举报
回复
你是要读所有的单词还是仅仅test这个单词?区别很大的
sobvow 2008-12-23
  • 打赏
  • 举报
回复
各位帮帮忙啊,急用。。。到10点结束了啊
sobvow 2008-12-23
  • 打赏
  • 举报
回复
楼上的朋友能否帮忙把代码写一下呢?
谢谢了
急用


sobvow 2008-12-23
  • 打赏
  • 举报
回复
大家能帮忙吧代码写出来吗?
谢谢了
急用
赶紧不仅!!
pailman 2008-12-23
  • 打赏
  • 举报
回复
楼上正解
jcyan 2008-12-23
  • 打赏
  • 举报
回复
读文本文档很简单的啊,网上到处都是
读取到的文本为String,将该String 用 test分割,读取分割后字符数组长度即可
sobvow 2008-12-23
  • 打赏
  • 举报
回复
Java 读取当前目录下一段英文文档统计每个单词出现的次数和单词的总数 英文文档名字为 english.txt

代码如下

import java.util.*;
import java.util.regex.*;
import java.io.*;
public class UserTreeMap{

public static void main(String args[]) throws IOException{

BufferedReader buf=new BufferedReader(new FileReader("english.txt"));
System.out.println("Read under this dir English.txt");
StringBuffer sbuf=new StringBuffer();//缓冲字符串
String line=null;
while((line=buf.readLine())!=null){
sbuf.append(line);//追加到缓冲字符串中
}
buf.close();//读取结束
Pattern expression=Pattern.compile("[a-zA-Z]+");//定义正则表达式匹配单词
String string1=sbuf.toString().toLowerCase();//转换成小写
Matcher matcher=expression.matcher(string1);定义string1的匹配器
TreeMap myTreeMap=new TreeMap();//创建树映射 存放键/值对
int n=0;//文章中单词总数
Object word=null;//文章中的单词
Object num=null;//出现的次数
while(matcher.find()){//是否匹配单词
word=matcher.group();//得到一个单词-树映射的键
n++;//单词数加1
if(myTreeMap.containsKey(word)){//如果包含该键,单词出现过
num=myTreeMap.get(word);//得到单词出现的次数
Integer count=(Integer)num;//强制转化
myTreeMap.put(word,new Integer(count.intValue()+1));
}
else
{
myTreeMap.put(word,new Integer(1));//否则单词第一次出现,添加到映射中
}
}
System.out.println("统计分析如下:");
System.out.println(""t 文章中单词总数"+n+"个");
System.out.println("具体的信息在当前目录的result.txt文件中");
BufferedWriter bufw=new BufferedWriter(new FileWriter("result.txt"));
Iterator iter=myTreeMap.keySet().iterator();//得到树映射键集合的迭代器
Object key=null;
while(iter.hasNext()){//使用迭代器遍历树映射的键
key=iter.next();
bufw.write((String)key+":"+myTreeMap.get(key));//键/值写到文件中
bufw.newLine();
}
bufw.write("english.txt中的单词总数"+n+"个");
bufw.newLine();
bufw.write("english.txt中不同单词"+myTreeMap.size()+"个");
bufw.close();
}
}

请问这个如何来修改呢?大家帮帮忙啊
zhaiyujia860417 2008-12-23
  • 打赏
  • 举报
回复
先共File读取出来,buffered
然后存成StringBuffered
再用循环题做个计数器
返回检索的位置indexOf("要检索的字符",检索的开始位置);
检索不到返回-1

剩下的就自己设计吧,全告诉你了,你学啥啊
加载更多回复(3)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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