Topic: 【求助】新手请教关于编写一个wordcounter小程序的问题 |
Print this page |
1.【求助】新手请教关于编写一个wordcounter小程序的问题 | Copy to clipboard |
Posted by: liusmallsea Posted on: 2005-02-28 18:19 小弟我初学java,最近要编一个小程序,万分郁闷:就是读取一个txt文件,把里面的单词读到一个数组里面,并相应的统计对应单词在文章中的出现频率。 我声明一个string和一个int的数组并用bufferedreader读取txt文档 可是bufferedreader一次只读一行,有哪位大侠知道怎么把文档中的单词不重复的放入那个string的数组中么?并用int统计相应单词的出现次数? 小弟不胜感谢啊。。。 |
2.Re:【求助】新手请教关于编写一个wordcounter小程序的问题 [Re: liusmallsea] | Copy to clipboard |
Posted by: 凋谢的玫瑰 Posted on: 2005-02-28 21:53 小弟也是初学JAVA,这有个源程序 不知是否用的上!! import java.io.*; import java.util.*; public class FileRW { //需要输入的person数目。 public static int NUMBER = 3; public static void main(String[] args) { Person[] people = new Person[NUMBER]; //暂时容纳输入数据的临时字符串数组。 String[] field = new String[4]; //初始化field数组。 for(int i = 0; i < 4; i++) { field[i] = ""; } //IO操作必须捕获IO异常。 try { //用于对field数组进行增加控制。 int fieldcount = 0; //先使用System.in构造InputStreamReader,再构造BufferedReader。 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); for(int i = 0; i < NUMBER; i++) { fieldcount = 0; System.out.println("The number " + (i + 1) + " person"); System.out.println("Enter name,age,salary,married(optional), please separate fields by ':'"); //读取一行。 String personstr = stdin.readLine(); //设置分隔符。 StringTokenizer st = new StringTokenizer(personstr,":"); //判断是否还有分隔符可用。 while (st.hasMoreTokens()) { field[fieldcount] = st.nextToken(); fieldcount++; } //如果输入married,则field[3]不为空,调用具有四个参数的Person构造函数。 if(field[3] != "") { people[i] = new Person(field[0], Integer.parseInt(field[1]), Double.parseDouble(field[2]), field[3]); //置field[3]为空,以备下次输入使用。 field[3] = ""; } //如果未输入married,则field[3]为空,调用具有三个参数的Person构造函数。 else { people[i] = new Person(field[0], Integer.parseInt(field[1]), Double.parseDouble(field[2])); } } //将输入的数据保存至“people.dat”文本文件中。 PrintWriter out = new PrintWriter( new BufferedWriter(new FileWriter("people.dat"))); writeData(people, out); //关闭流。 out.close(); //从文件“people.dat”读取数据。 BufferedReader in = new BufferedReader(new FileReader("people.dat")); Person[] inPeople = readData(in); //关闭流。 in.close(); //输出从文件中读入的数据。 for (int i = 0; i < inPeople.length; i++) System.out.println(inPeople[i]); } catch(IOException exception) { System.err.println("IOException"); } } //将所有数据写入输出流。 static void writeData(Person[] p, PrintWriter out) throws IOException { //写入记录条数,即人数。 out.println(p.length); for (int i = 0; i < p.length; i++) p[i].writeData(out); } //将所有数据从输入流中读出。 static Person[] readData(BufferedReader in) throws IOException { //获取记录条数,即人数。 int n = Integer.parseInt(in.readLine()); Person[] p = new Person[n]; for (int i = 0; i < n; i++) { p[i] = new Person(); p[i].readData(in); } return p; } } class Person { private String name; private int age; private double salary; private String married; public Person() { } public Person(String n, int a, double s) { name = n; age = a; salary = s; married = "F"; } public Person(String n, int a, double s, String m) { name = n; age = a; salary = s; married = m; } public String getName() { return name; } public int getAge() { return age; } public double getSalary() { return salary; } public String getMarried() { return married; } //设置输出格式。 public String toString() { return getClass().getName() + "[name=" + name + ",age=" + age + ",salary=" + salary + ",married=" + married + "]"; } //写入一条记录,即一个人的数据到输出流。 public void writeData(PrintWriter out) throws IOException { //格式化输出。 out.println(name + ":" + age + ":" + salary + ":" + married); } //从输入流读入一条记录,即一个人的数据。 public void readData(BufferedReader in) throws IOException { String s = in.readLine(); StringTokenizer t = new StringTokenizer(s, ":"); name = t.nextToken(); age = Integer.parseInt(t.nextToken()); salary = Double.parseDouble(t.nextToken()); married = t.nextToken(); } } |
3.Re:【求助】新手请教关于编写一个wordcounter小程序的问题 [Re: liusmallsea] | Copy to clipboard |
Posted by: liusmallsea Posted on: 2005-03-01 17:57 谢谢楼上的啊。。。可是好像不行啊。。。不是一个功能啊。。。 |
4.Re:【求助】新手请教关于编写一个wordcounter小程序的问题 [Re: liusmallsea] | Copy to clipboard |
Posted by: caoyi Posted on: 2005-03-03 14:35 import java.io.*; public class testaddsub { public static void main(String[] args) { try { int count = 0; BufferedReader in = new BufferedReader(new FileReader("test.txt")); String str; while ((str = in.readLine()) != null) { for(int i=0;i <str.length();i++) { if(str.substring(i,str.length()).indexOf("a")>=0) { count++; } } } System.out.println(count); in.close(); } catch (IOException e) {} } } 不知道你要用数组干什么。 可以经常去http://www.javaalmanac.com/找找看类的用法和例子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |