设计一个类,能够读取一个外部文件javaread.txt,并能够统计文件中单词test的出现次数
解决方案 »
- JAVA赋值运算的问题
- 高手相送,关于这段小代码,能不能讨论得透一点,11月20日结贴。
- 我jar包做好了,写个批处理可以运行程序的,但为什么我在地址中打开该批处理文件却不能运行程序呢?
- 初学JAVA应该注意些什么
- Java新手入门的30个基本概念[3]
- 有关 Swing多线程
- 求助:如何用鼠标右键来选择JTable的一行或多行,并弹出菜单( 急....................................................................
- 蔡鸟提问:调试servlet需要装哪些软件。最好说明如何配置
- 急急!!!!!!!!!在applet中显示图片时加入滚动条
- 请advanced(超越)来拿分
- 关于String s="a" + "b" 共创建了几个对象,自己的看法
- String的构造方法public String(String original)这个的实现
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();
}
} 请问这个如何来修改呢?大家帮帮忙啊
读取到的文本为String,将该String 用 test分割,读取分割后字符数组长度即可
仅仅TEST这个单词出现的次数
{
String ss = "Hi,I am want test the test";
String[] arr = ss.split("test");
System.out.println(arr.length);
}
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
不能单纯的split,wtest gtext 你去试试!再说,如果就是Text结尾还好,如果不是text结尾,那么arr.length就是一个错误,别误导
看我11楼的回复,split是不会区分单词的,如果包含text就满足,别跟着起哄
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的出现次数 大家帮忙完整下,谢谢了
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();
}
}
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();
}
}
全部大写字母的TEST没考虑到呢。。
代码如下package main;
import java.io.*;class Word {
private static int num=0;//记录test数目
public void run(FileReader fr) throws IOException {
BufferedReader br=new BufferedReader(fr);
String line=null;
while((line=br.readLine())!=null)
{
String[] ss=line.split("\\W+");
for(String e:ss)
if(e.contentEquals("test")) num++;//如果单词是test则记录
}
System.out.println("\"test\" is: "+num);//打印test个数
}
}public class Main {
public static void main(String[] args) throws IOException {
Word w=new Word();
FileReader f=new FileReader("E:/javaread.txt");
w.run(f);
f.close();
}
}//javaread.txt文件内容如下
The program test,test the word "test" in this article.
The program test,test the word "test" in this article.
The program test,test the word "test" in this article.//运行结果
"test" is: 9
import java.io.*;class Word {
private static int num=0;//记录test数目
public void run() throws IOException {
FileReader f=new FileReader("E:/javaread.txt");
BufferedReader br=new BufferedReader(f);
String line=null;
while((line=br.readLine())!=null)
{
String[] ss=line.split("\\W+");
for(String e:ss)
if(e.contentEquals("test")) num++;//如果单词是test则记录
}
System.out.println("\"test\" is: "+num);//打印test个数
f.close();
}
}public class Main {
public static void main(String[] args) throws IOException {
Word w=new Word();
w.run();
}
}
然后存成StringBuffered
再用循环题做个计数器
返回检索的位置indexOf("要检索的字符",检索的开始位置);
检索不到返回-1剩下的就自己设计吧,全告诉你了,你学啥啊